나의 풀이
# 입력
n, m = map(int,input().split())
lines = []
for _ in range(n):
lines.append(int(input()))
start,end = 1,max(lines)
# 처리
while start <= end:
mid = (start + end) // 2
temp = 0
for l in lines:
temp += (l // mid)
if temp >= m:
start = mid + 1
else:
end = mid-1
print(end)
CODE REVIEW
-
이분탐색
을 응용해서 해결하는 문제. 처음 봤을 때에는 막막했는데, 최종 자른 선의 길이를 기준으로 이분 탐색을 실시해서 답을 찾아내었다. -
start=1, end=max(lines)
로 설정했는데, 만일end=min(lines)
로 설정하면 [1,100,100,100,100]같은 input의 경우 1을 출력해서 문제가 발생한다.