파이썬 알고리즘 : 랜선 자르기

이진탐색

2024년 4월 3일 알고리즘 문제풀이

문제

난이도

실버 2

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys

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

low = 0
high = 2**31-1

while low <= high:
    mid = (low+high)//2
    cnt = 0
    for thing in lan:
        cnt += thing//mid
    
    if cnt >= n:
        low = mid+1
    else:
        high = mid-1
print((high+low)//2)

생각보다 평범한 이진탐색문제였다.