출처: 백준 1654번 랜선 자르기
각 랜선을 정해진 크기로 잘랐을 때 몇 개가 나오는지 탐색해나가면 되는 문제이다.
이 때, 하나씩 올려가며 찾는 것은 시간이 n만큼 들기 때문에 절반씩 찾아가는 이분 탐색을 사용한다.
import sys
input = sys.stdin.readline
N, K = map(int,input().split())
lan = [int(input()) for _ in range(N)]
start = 1
end = max(lan)
while start <= end:
mid = (start+end)//2
temp = 0
for i in lan:
temp += i//mid
if temp >= K:
start = mid + 1
else:
end = mid - 1
print(end)