https://www.acmicpc.net/problem/13702
이 문제를 처음엔 count 변수와 total 변수를 사용해서 count += i // mid
total += i - mid
이런식으로 해서 풀었는데, 사실상 count변수는 필요가 없었다.
그리고 내가 놓친 부분이 문제에서는 "최소한의 술의 양"을 구하라고 했는데, 나는 최대 술의 양을 구해서 틀렸었다.
문제에서 요구하는 조건을 더 꼼꼼하게 읽어야겠다.
n, m = map(int, input().split())
array = [int(input()) for _ in range(n)]
start = 1 # 최소한의 술의 양은 1이므로 start를 1로 설정합니다.
end = max(array) # 최대 술의 양을 구합니다.
result = 0
while start <= end:
total = 0
mid = (start + end) // 2
for i in array:
total += i // mid
if total >= m:
result = mid
start = mid + 1
else:
end = mid - 1
print(result)