https://www.acmicpc.net/problem/13702
Paramatric Search (매개변수 탐색)
을 활용하여 풀었다.
적절한 용량을 찾기위해 mid
를 조절해가며 조건의 만족여부에 따라 범위를 좁혀가며 해결한다. 범위를 좁힐 때 이분탐색으로 절반씩 탐색범위를 좁혀나가며 해결하면 된다.
import sys
input = sys.stdin.readline
def solve():
n, k = map(int, input().split())
capacity = []
for i in range(n):
capacity.append(int(input()))
left = 0
right = 2 ** 31 - 1
while left <= right:
mid = (left + right) // 2
cnt = 0
for i in range(n):
cnt += capacity[i] // mid
if cnt >= k:
left = mid + 1
else:
right = mid - 1
return right
print(solve())