(Python) BOJ - 1654. 랜선 자르기

이수현·2021년 2월 18일
1

solved.ac - Class 2

목록 보기
2/4

BOJ - 1564. 랜선 자르기

import sys

k, n = map(int, sys.stdin.readline().split())
cable = [int(sys.stdin.readline()) for _ in range(k)]

left, right = 1, max(cable)

while left <= right:
    mid = (left + right) // 2
    cnt = 0
    for c in cable:
        cnt += c // mid
    if cnt >= n:
        left = mid + 1
    else:
        right = mid - 1

print(right)

어떤 하나의 숫자부터 시작해 1씩 증가해 나가며 확인할 수 있겠지만, 그렇게 풀면 시간 초과가 나올 수 밖에 없다. 따라서 이분 탐색으로 풀기!
이 문제는 유난히 계속 틀렸던 문제인데... 이분탐색을 잘 이해해야 하고 사소한 코드 실수를 조심해야 한다...😭
이분 탐색은 나도 아직 많이 안풀어봐서...

0개의 댓글