- 이진 탐색을 이용하는 문제였다.
ZeroDivisionError
와 문제를 잘못 이해하여 예상보다 시간이 좀 더 걸렸다.ZeroDivisionError
해결 : 과자의 길이는(1 ≤ L1, L2, ..., LN ≤ 1,000,000,000)
이다.
입력
3 10
1 2 3 4 5 6 7 8 9 10
출력
8
- 길이가 8, 9, 10인 과자를 최소 길이인 8로 나누면 3명의 조카들에게 과자를 균등하게 나눠줄 수 있다.
입력
4 3
10 10 15
출력
7
- 길이가 10, 10, 15인 과자를 최소 길이인 7로 나누면 4명의 조카들에게 과자를 균등하게 나눠줄 수 있다.
import sys
input = sys.stdin.readline
M, N = map(int, input().strip().split())
snack = list(map(int, input().strip().split()))
start = 1
end = max(snack)
while start <= end:
result = 0
mid = (start + end) // 2
for i in snack:
if i >= mid:
result += i // mid
if result >= M:
start = mid + 1
else:
end = mid - 1
print(end)