문제링크:https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 다루는 주제: 분할 정복 import sys A, B, C = map(int, sys.stdin.readline().split()) # A * A * A * A ... * A % C로 문제를 풀고자 했으면 시간 초과 # A**B%C를 (A**B//2) * (A**B//2) * C 이런식으로 곱셈 계산을 최소화 def calc(a, b): if b == 1: return a % C else: temp = calc(a, b // 2) # ex) 10^10 ..
문제풀이:https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 다루는 주제: 분할 정복 import sys N = int(sys.stdin.readline()) square = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] white = 0 blue = 0 def cut(row, column, n): global white, blue color = squ..
문제링크:https://www.acmicpc.net/problem/8983 import sys # 첫줄 입력 M은 사대의 수 N은 동물의 수 L은 사정거리 M, N, L = map(int, sys.stdin.readline().split()) # 두 번쨰 줄 입력은 사대의 좌표 입력 saro = list(map(int, sys.stdin.readline().split())) # 그 이후 줄들은 동물의 좌표 animal = [list(map(int, sys.stdin.readline().split())) for i in range(N)] saro.sort() count = 0 for a, b in animal: if b > L: # 동물 좌표 b가 L보다 크면 잡을수없다. continue start = 0..
문제링크:https://www.acmicpc.net/problem/2110 import sys N, C = map(int, sys.stdin.readline().split()) home = [] for _ in range(N): home.append(int(sys.stdin.readline())) home.sort() # 이분 탐색을 위해 정렬 start = 0 end = home[-1] ans = 0 def binary(arr, s, e): while s = current + m: # arr[i]보다 작거나 같으면 count +=1 공유기를 arr[i]에 설치 count += 1 current = arr[i] if count >= C: # C를 넘어가면 더 넓게 설치할수있다는 말 => s = m+1 g..