JiSoo's Devlog

[백준 / 파이썬] 1654번 랜선 자르기 본문

코테준비

[백준 / 파이썬] 1654번 랜선 자르기

지숭숭숭 2024. 1. 14. 19:04

k, n = map(int, input().split())
a=[]

for i in range(k):
    a.append(int(input()))

start = 1
end = max(a)

while(start <= end):
    mid = (start + end) // 2
    c = 0
    for i in range(k):
        c += a[i] // mid
    if c >= n:
        start = mid + 1
    else:
        end = mid - 1
        
print(end)

 

길이 범위를 1부터 가장 긴 랜선 길이까지

잘라진 랜선의 개수가 n보다 많으면 mid보다 더 큰 수들만 다시 확인하면 되기 때문에 mid+1

최대 랜선 길이를 구해야 하기 때문에 필요한 랜선 개수보다 작아지는 순간 mid -1

 

728x90