가오리의 코딩일기

[1654] 랜선 자르기 본문

Python/백준

[1654] 랜선 자르기

류경혜 2022. 8. 1. 17:00

 

import sys
ohLan, needLan = map(int, sys.stdin.readline().split())
ohLanList = []  # 오영식이 가지고 있는 랜선 리스트
for _ in range(ohLan):
    ohLanList.append(int(sys.stdin.readline()))
start, end = 1, max(ohLanList)  # 가장 작은 값, 리스트에서 가장 큰 값
while start <= end:  # 조건을 만족하는 최대 랜선 길이 찾기
    middle = (start+end)//2  # 시작과 끝의 중간 지점
    lines = 0  # 만들 랜선의 총 개수
    for i in ohLanList:
        lines += i//middle  # 총 몇 개의 랜선이 나오나
    # 랜선이 목표치 이상/이하면 start=middle+1/end = middle -1
    if lines >= needLan:  # 랜선의 개수가 분기점
        start = middle + 1
    else:
        end = middle - 1
print(end)

 

'Python > 백준' 카테고리의 다른 글

[2110] 공유기 설치  (0) 2022.08.04
[11728] 배열 합치기  (0) 2022.08.04
[2004] 조합 0의 개수  (0) 2022.08.01
[1929] 소수 구하기  (0) 2022.07.21
[6588] 골드바흐의 추측  (0) 2022.07.18