[1654번] 전깃줄 자르기

HYEOB KIM·2022년 5월 31일
1

algorithm

목록 보기
20/44
post-custom-banner

백준 1654번 전깃줄 자르기

코드 풀이

import sys
K, N = map(int, sys.stdin.readline().split(' '))

wire = [int(sys.stdin.readline()) for _ in range(K)]

start = 0
end = max(wire)
result = 1
while start <= end:
    mid = (start + end) // 2
    cnt = 0

    for length in wire:
        if mid != 0:
            cnt += length // mid

    if cnt >= N:
        start = mid + 1
        result = max(result, mid)
    else:
        end = mid - 1

print(result)
  • 런타임 에러(ZeroDivision)을 해결하기 위해 if mid != 0 이라는 조건이 추가되었습니다. 이분 탐색을 진행하다가 0 을 기준으로 자른다는 뜻은 아무것도 자를 수 없는 것과 같기 때문에 cnt 의 초기값인 0과 같습니다.
profile
Devops Engineer
post-custom-banner

0개의 댓글