[백준/BOJ][Python] 1654번 랜선 자르기

Eunding·2024년 10월 14일

algorithm

목록 보기
25/110

1654번 랜선 자르기

https://www.acmicpc.net/problem/1654


사실 7개월 전에 풀었던 문제인데 또 틀렸었다
진짜 안풀면 다 까먹는 게 맞는 것 같다

아이디어

low = 1, high=(주어진 랜선의 최댓값)으로 한 후 이분탐색

내가 틀렸던 이유 : 처음에 low = 0으로 두고 풀어서 ZeroDivisionError

코드

n, k = map(int, input().split())
lan = [int(input()) for _ in range(n)]

low =  1
high = max(lan) # 랜선 중 최댓값
answer = 0

while low <= high:
    mid = (low + high) // 2
    cnt = 0
    
    for num in lan:
        if mid != 0:
            cnt += num // mid

    if cnt >= k:
        answer = mid
        low = mid + 1
    else:
        high = mid - 1

print(answer)

0개의 댓글