알고리즘
[백준 1654] 랜선 자르기 - 이분탐색
kyeongjun-dev
2021. 12. 22. 10:40
코드
import sys
n, k = map(int, input().split())
arr = []
end = 0
for _ in range(n):
arr.append(int(sys.stdin.readline()))
end = max(end, arr[-1])
start = 1
while start <= end:
mid = (start + end) // 2
cnt = 0
for l in arr:
cnt = cnt + l // mid
if cnt >= k:
start = mid + 1
else:
end = mid - 1
print(end)
설명
- 이분탐색의 while문 조건은 start <= end 임을 명시
- mid를 다시 잡을 때에는, start +1 이나 end - 1로 함을 명시