백준 1654번 랜선 자르기

DARTZ·2022년 5월 15일
0

알고리즘

목록 보기
58/135
import sys
sys.stdin = open('input.txt', 'rt')
input = sys.stdin.readline

K, N = map(int, input().split())

lan = []

for _ in range(K):
    lan.append(int(input()))

end = max(lan)
start = 1 # 0으로 설정하면 제로 디비전 오류가 발생한다. 

while start <= end:
    middle = (start + end) // 2

    sum_lan = sum([l // middle for l in lan])

    if sum_lan >= N:
        answer = middle
        start = middle + 1

    else:
        end = middle - 1

print(answer)

일반적인 이분 탐색 문제이다.

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글