백준 문제 링크
이상한 술집
- 주전자의 용량을 array에 받아주고, 정렬한다.
- 초기값 start = 1, end = max(array), cnt = 0으로 지정한다.
- 기본 이분 탐색 코드에서 array의 원소를 mid로 나눴을 때의 몫을
cnt에 더해준다.
- 모두 다 더한 cnt가 K보다 작다면 start = mid + 1
- 모두 다 더한 cnt가 K보다 크거나 같다면 end = mid - 1, result = mid
- result를 반환하면 끝!
N, K = map(int, input().split())
array = []
for _ in range(N):
array.append(int(input()))
array.sort()
start = 1
end = max(array)
result = 0
while start <= end:
mid = (start + end) // 2
cnt = 0
for x in array:
if x >= mid:
cnt += x // mid
if cnt < K:
end = mid - 1
else:
start = mid + 1
result = mid
print(result)