BOJ - 1654

주의·2024년 1월 26일
0

boj

목록 보기
118/214

백준 문제 링크
랜선 자르기

❓접근법

  1. 랜선을 array에 받은 후 array를 정렬한다.
  2. 기본 이분 탐색 코드에서,
    array의 원소를 mid로 나누었을 때의 몫을 cnt에 더해준다.
  3. 조건은 다음과 같다.
  • cnt가 필요한 랜선의 개수 K보다 작다면
    end = mid - 1
  • 그 외에는 start = mid + 1 해준다.
  1. 마지막으로 end를 출력하면 끝!

👌🏻코드

N, K = map(int, input().split())
array = []
for _ in range(N):
    array.append(int(input()))
    
array.sort()

start = 1
end = max(array)


while start <= end:
    mid = (start + end) // 2
    
    cnt = 0
    
    for x in array:
        cnt += x // mid
            
    if cnt < K:
        end = mid - 1
    else:
        start = mid + 1
        
print(end)

0개의 댓글