문제를 읽고 오래 생각하다 보면 결국 최적의 값을 탐색해야 하는 문제임을 알 수 있다. 이진 탐색 방법을 사용하자.
import sys
input = sys.stdin.readline
k, n = map(int, input().split())
lst = [int(input().rstrip()) for _ in range(k)]
l, r = 1, max(lst)
while (l <= r):
m = (l + r) // 2
cnt = 0
for i in lst:
cnt += (i // m)
if cnt >= n:
l = m + 1
else:
r = m - 1
print(r)
'백준' 카테고리의 다른 글
[백준] 2164번 파이썬 (카드2) (0) | 2024.02.19 |
---|---|
[백준] 1929번 파이썬 (소수 구하기) (0) | 2024.02.18 |
[백준] 1874번 파이썬 (스택 수열) (0) | 2024.02.18 |
[백준] 7785번 파이썬 (회사에 있는 사람) (0) | 2024.02.12 |
[백준] 18870번 파이썬 (좌표 압축) (0) | 2024.02.11 |