[BaekJoon] 1629번 - 곱셈 [Java][C++]
문제 링크 1. 아이디어 간단하게 $A^B \ (\mathrm{mod}\ C)$ 를 구해야 하는 문제다. B의 크기가 최대 2,147,483,647이어서 반복적으로 곱하는 방식으로는 O(N)의 시간 복잡도가 소요돼서 해결할 수 없다. O(N) 보다 빠른 알고리즘으로 해결해야 하는데 O(log N)의 시간 복잡도로 거듭제곱을 계산할 수 있는 ...
문제 링크 1. 아이디어 간단하게 $A^B \ (\mathrm{mod}\ C)$ 를 구해야 하는 문제다. B의 크기가 최대 2,147,483,647이어서 반복적으로 곱하는 방식으로는 O(N)의 시간 복잡도가 소요돼서 해결할 수 없다. O(N) 보다 빠른 알고리즘으로 해결해야 하는데 O(log N)의 시간 복잡도로 거듭제곱을 계산할 수 있는 ...
문제 링크 1. 문제 풀이 $K$ 번째 소수를 출력하는 문제로 소수를 빠르게 판정할 수 있는 에라토스테네스의 체를 활용하면 간단하게 해결할 수 있다. $K$ 가 최대 $500,000$ 이라는 점을 활용해 $500,000$ 번째 소수를 미리 구해보고 해당 수까지의 범위에 대해 에라토스테네스의 체를 적용했다. 2. 코드 1. 풀이 [...
문제 링크 1. 문제 풀이 $(x_1,\ y_1)$ 부터 $(x_2,\ y_2)$ 까지 영역의 합을 $M$ 번 구해야 하는 문제로 매번 반복해서 찾으면 시간이 오래 걸린다. 1차원 누적 합을 응용한 2차원 누적 합을 적용하면 해결할 수 있다. 2. 코드 1. 풀이 [Java] import java.io.*; import java...
문제 링크 1. 문제 풀이 $N$ 개의 수에 대해 $M$ 개의 각 구간의 합을 구해야 하는 문제로 매번 주어진 구간의 합을 반복문으로 구하면 $O(NM)$ 의 시간복잡도로 동작한다. 반복되는 구간의 합을 빠르게 구할 수 있는 누적 합을 활용했다. 2. 코드 1. 풀이 [Java] import java.io.*; import ja...
문제 링크 1. 아이디어 주어진 좌표를 y좌표에 대한 오름차순으로, y좌표가 같다면 x좌표에 대한 오름차순으로 정렬하는 간단한 문제다. 다만 N이 최대 100,000이라서 O(N²) 보다 빠른 정렬 알고리즘이 필요하다. 2. 코드 1. 풀이 [Java] 2차원 배열로 좌표를 입력받고 람다식을 활용하여 정렬 후 출력했다. imp...
문제 링크 1. 아이디어 주어진 좌표를 x좌표에 대한 오름차순으로, x좌표가 같다면 y좌표에 대한 오름차순으로 정렬하는 간단한 문제다. 다만 N이 최대 100,000이라서 O(N²) 보다 빠른 정렬 알고리즘이 필요하다. 2. 코드 1. 풀이 [Java] 2차원 배열로 좌표를 입력받고 람다식을 활용하여 정렬 후 출력했다. imp...
문제 링크 1. 문제 풀이 $N$ 개의 수에 대해 $M$ 개의 각 구간의 합을 구해야 하는 문제로 매번 주어진 구간의 합을 반복문으로 구하면 $O(NM)$ 의 시간복잡도로 동작한다. 반복되는 구간의 합을 빠르게 구할 수 있는 누적 합을 활용했다. 2. 코드 1. 풀이 [Java] import java.io.*; import ja...
문제 링크 1. 문제 풀이 주어진 세 변의 길이를 통해 직각삼각형인지 여부를 판단하는 문제로 피타고라스 정리를 활용하면 해결할 수 있다. 주어진 세 변의 길이를 정렬한 후 가장 긴 변의 길이의 제곱이 나머지 두 변의 길이의 제곱의 합이랑 같은지 비교하면 된다. 2. 코드 1. 풀이 [Java] import java.io.*; i...
문제 링크 1. 문제 풀이 다트가 다트판에서 몇 점에 위치하는지 구할 수 있어야 하는 문제로 다트판의 중심과 다트와의 거리를 피타고라스 정리로 구하고 해당 거리가 어떤 고리에 위치하는지 판단하면 다트의 점수를 구할 수 있다. 2. 코드 1. 풀이 [Java] import java.io.*; import java.util.*; ...
문제 링크 1. 문제 풀이 BaekJoon 2565번 - 전깃줄 문제에서 전깃줄의 개수가 최대 $100,000$ 으로 커지고 없애야 하는 전깃줄까지 출력해야 하는 문제다. 이전 문제는 2중 반복문을 활용한 LIS로 해결할 수 있었다면 이제는 이분 탐색을 활용한 LIS를 활용하면 해결할 수 있다. 2. 코드 1. 풀이 [Java] ...