전체 카테고리
[백준] 11401번 : 이항 계수 3 - JAVA [자바]
[백준] 11401번 : 이항 계수 3 - JAVA [자바]
2021.04.23www.acmicpc.net/problem/11401 11401번: 이항 계수 3 자연수 \(N\)과 정수 \(K\)가 주어졌을 때 이항 계수 \(\binom{N}{K}\)를 1,000,000,007로 나눈 나머지를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 이 전에 풀었었던 정수론 및 조합론 카테고리의 이항 계수 2 문제를 풀었다면 크게 어려움 없이 풀었을 것이다. 알고리즘 [접근 방법] 이 문제는 이 전에 이미 설명해줬기 때문에 내용이 거의 중복될 것이다. 일단 문제를 풀이하기 전에 아래 글을 읽고 오시는 것을 추천드린다. st-lab.tistory.com/162 [백준] 11051번 : 이항 계수 2 - JAVA [자바] www.acmicpc.net/problem/11051 1..
자바 [JAVA] - Hash Set (해시 셋) 구현하기
자바 [JAVA] - Hash Set (해시 셋) 구현하기
2021.04.14자료구조 관련 목록 링크 펼치기 더보기 0. 자바 컬렉션 프레임워크 (Java Collections Framework) 1. 리스트 인터페이스 (List Interface) 2. 어레이리스트 (ArrayList) 3. 단일 연결리스트 (Singly LinkedList) 4. 이중 연결리스트 (Doubly LinkedList) 5. 스택 인터페이스 (Stack Interface) 6. 스택 (Stack) 7. 큐 인터페이스 (Queue Interface) 8. 배열 큐 (Array Queue) 9. 연결리스트 큐 (LinkedList Queue) 10. 배열 덱 (Array Deque) 11. 연결리스트 덱 (LinkedList Deque) 12. 배열 힙 (Heap) 13. 우선순위 큐 (Priority..
[백준] 2742번 : 기찍 N - [C++]
[백준] 2742번 : 기찍 N - [C++]
2021.04.12www.acmicpc.net/problem/2742 2742번: 기찍 N 자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 바로 직전 문제인 N찍기를 반대로만 하면 되는 문제다. 알고리즘 [접근 방법] 이 문제는 모두 쉽게 풀었을 것이다. 직전 문제인 N 찍기 문제를 풀었다면야 바로 거꾸로만 하면 되기 때문에... 유의해야 할 점은 N부터 시작하여 1까지 출력해야 한다는점이다. 이 점만 주의하여 풀면 된다. 그리고 직전 문제를 풀어보았다면 알겠지만, 조금 더 빠른 입출력을 위한 방법을 이용하면 좀 더 성능 좋은 결과를 얻을 수 있다. 해당 글은 아래 글을 참고하시길 바란다. st-lab.tistory.com/236#알고리즘 [백준]..
자바 [JAVA] - Set Interface (셋 인터페이스)
자바 [JAVA] - Set Interface (셋 인터페이스)
2021.04.09•자료구조 관련 목록 링크 펼치기 더보기 0. 자바 컬렉션 프레임워크 (Java Collections Framework) 1. 리스트 인터페이스 (List Interface) 2. 어레이리스트 (ArrayList) 3. 단일 연결리스트 (Singly LinkedList) 4. 이중 연결리스트 (Doubly LinkedList) 5. 스택 인터페이스 (Stack Interface) 6. 스택 (Stack) 7. 큐 인터페이스 (Queue Interface) 8. 배열 큐 (Array Queue) 9. 연결리스트 큐 (LinkedList Queue) 10. 배열 덱 (Array Deque) 11. 연결리스트 덱 (LinkedList Deque) 12. 배열 힙 (Heap) 13. 우선순위 큐 (Priorit..
[백준] 1629번 : 곱셈 - JAVA [자바]
[백준] 1629번 : 곱셈 - JAVA [자바]
2021.04.07www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 문제 알고리즘 [접근 방법] 이 문제는 얼핏보면 B번 거듭제곱 해주면 될 것 같지만... 왜 분할정복 카테고리에 있겠는가.. A, B, C는 각각 최대 2,147,483,647을 갖을 수 있다는 것이고, 2,147,483,647번 거듭제곱 하는 것 부터 많은 수행 과정과, C로 모듈러 연산까지 해주어야 하기 떄문에 시간초과가 날 것이 너무나 뻔하다. 하지만 문제는 그리 어렵지 않다. 우리가 모두가 배웠던 간단한 '지수 법칙'과 '모듈러 성질'만 알고 있으면 된다. 일단 지수법..
[백준] 2741번 : N 찍기 - [C++]
[백준] 2741번 : N 찍기 - [C++]
2021.04.06www.acmicpc.net/problem/2741 2741번: N 찍기 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 그리 어렵지 않은 문제다. 알고리즘 [접근 방법] 이 문제는 모두 쉽게 풀었을 것이다. 다만, 여러분들이 유의해야 할 점은 1부터 시작하여 N까지 출력해야 한다는점이다. 평소 버릇처럼 for문에서 for(int i = 0; i < N: i++) 으로 했다간 틀렸습니다를 받게 될 것이다. (항상 문제를 잘 읽는 것이 중요하다.) 그리고 직전 문제를 풀어보았다면 알겠지만, 조금 더 빠른 입출력을 위한 방법을 이용하면 좀 더 성능 좋은 결과를 얻을 수 있다. 해당 글은 아래 글을 참고하시길 바란다. st-lab.ti..
[백준] 1780번 : 종이의 개수 - JAVA [자바]
[백준] 1780번 : 종이의 개수 - JAVA [자바]
2021.04.05www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net 문제 색종이 만들기 문제와 매우 유사한 문제다. 알고리즘 [접근 방법] 이 문제는 결코 어렵지 않다. 이전에 색종이 만들기 문제를 풀어보았다면 매우 쉽게 풀 수 있었을 것이다. 기본적인 쿼드트리 방식 문제를 변형한 것인지라 혹시 접근 방법을 모르곘다면 아래 두 문제를 먼저 풀이 방법을 보고 오는 것을 추천드린다. st-lab.tistory.com/227 [백준] 2630번 : 색종이 만들기 - JAV..
자바 [JAVA] - 합병정렬 / 병합정렬 (Merge Sort)
자바 [JAVA] - 합병정렬 / 병합정렬 (Merge Sort)
2021.03.31[정렬 알고리즘 모음] 더보기 1. 계수 정렬 (Counting Sort) 2. 선택 정렬 (Selection Sort) 3. 삽입 정렬 (Insertion Sort) 4. 거품 정렬 (Bubble Sort) 5. 셸 정렬 (Shell Sort) 6. 힙 정렬 (Heap Sort) 7. 합병(병합) 정렬 (Merge Sort) - [현재 페이지] 8. 퀵 정렬 (Quick Sort) 9. 이진 삽입 정렬 (Binary Insertion Sort) 10. 팀 정렬 (Tim Sort) Merge Sort [합병/병합 정렬] 이 번에 다뤄볼 정렬은 합병(병합) 정렬이다. 아마 대부분 합병, 혹은 병합이라는 단어를 알고있을 것이다. 왜 합병(병합)이라고 할까? 기본적으로 합병정렬은 '문제를 분할하고, 분할한 문..
[백준] 15552번 : 빠른 A+B - [C++]
[백준] 15552번 : 빠른 A+B - [C++]
2021.03.28www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 문제 기존의 A+B에서 좀 더 성능에 중심을 둔 문제다. 알고리즘 [접근 방법] 이 부분은 반복문 보다는 입출력에 관한 지식을 필요로 하는 문제다. C언어 혹은 C++ 의 경우 scanf(), printf()를 사용하면 이 입출력 자체가 매우 빠른 편이라 쉽게 통과하지만, 다른 언어의 경우는 조금 사정이 다르다. C++에서도 사실 Standard 입출력인 cin, cout을 사용하고자 하면 시간초과가 날 것이다. 그러면 어떻게 ..
[백준] 8393번 : 합 - [C++]
[백준] 8393번 : 합 - [C++]
2021.03.26www.acmicpc.net/problem/8393 8393번: 합 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 이 번 문제 또한 그리 어렵지 않은 문제다. 알고리즘 [접근 방법] 대부분 카테고리별로 순차적으로 풀어오셨다면 이 번 문제 또한 그리 어렵지 않게 풀었을 것이다. n이 주어졌을 때 1부터 n까지의 합을 구하면 되는 문제라 반복문으로 1부터 n까지 반복하면서 누적 합을 구하면 된다. 만약 반복문에 대해 잘 모르신다면 다음 글을 보고 오면 도움이 될 것이다. st-lab.tistory.com/228 [백준] 2739번 : 구구단 - [C++] www.acmicpc.net/problem/2739 2739번: 구구단 N을 입력받은 뒤, 구구단..