[백준] 1654번: 랜선 자르기

jooo·2023년 5월 27일
0

백준

목록 보기
35/35
post-thumbnail

💻 문제 - S2


👉 제출 코드

import sys
input = sys.stdin.readline
K, N = map(int, input().split())
cms = [int(input()) for _ in range(K)]
start, end = 1, max(cms)

while start <= end:
    mid = (start + end) // 2
    cnt = 0
    for i in cms:
        cnt += i // mid
    if cnt >= N:
        start = mid + 1
    else:
        end = mid - 1
print(end)
  • 이진 탐색을 이용하여 조건을 만족하는 최댓값을 구한다: 매개변수 탐색.
  • 최솟값/최댓값을 매개변수로 정한다.
  • cnt의 결과가 N보다 클 때(바뀌는 부분)를 찾아 갱신한다.
  • 최댓값이므로 end를 출력한다.
profile
조금씩, 꾸준히, 자주

0개의 댓글