리셋 되지 말자

[백준 1654] 랜선 자르기 - 이분탐색 본문

알고리즘

[백준 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로 함을 명시
Comments