알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 랜선 자르기(1654)

HRuler 2023. 4. 26. 13:23

1. 문제

https://www.acmicpc.net/problem/1654

 

1654번: 랜선 자르기

첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# k : 가지고 있는 랜선의 수
# n : 필용한 랜선의 수
k, n = map(int, input().split())

# kList : 가지고 있는 랜선의 길이 리스트
kList = [int(input()) for i in range(k)]
low, high = 1, max(kList) + 1
while True:
    lineCnt = 0
    midNum = (low + high) // 2
    for i in kList:
        lineCnt += i // midNum
    if lineCnt >= n:
        low = midNum
    else:
        high = midNum
    if high - low == 1:
        break
print(low)