[백준] 1654. 랜선 자르기 (Python)

yuuforest·2023년 9월 14일

이진탐색

목록 보기
8/9
post-thumbnail

백준 문제 풀이 - 이진탐색

📰 문제


문제 확인 🏃


💡 입출력 예제


4 11
802
743
457
539

>> 200

참고. https://www.acmicpc.net/board/view/124982

3 3
1000
1000
1

>> 500 
1 1
1

>> 1 
5 5
2
2
2
2
2

>> 2 
1 3
3

>> 1 

💬 풀이


🎵 첫번째 풀이

import sys

input = sys.stdin.readline
K, N = map(int, input().split())            # 이미 가지고 있는 랜선 개수 K, 필요한 랜선 개수 N
lines = [int(input() ) for _ in range(K)]   # 가지고 있는 각 랜선의 길이 

def solution(start, end):
    
    while start <= end:
        mid = (start + end) // 2

        total = 0
        for i in lines:
            total += (i // mid)

        if total < N:
            end = mid - 1
        else:
            start = mid + 1
    
    return start - 1

print(solution(1, max(lines)))


✒️ 생각


profile
🐥 Backend Developer 🐥

0개의 댓글