몽상실현개발주의

[BOJ] 1654 / 랜선 자르기 / Python 파이썬 본문

Algorithm PS/BOJ

[BOJ] 1654 / 랜선 자르기 / Python 파이썬

migrationArc 2021. 6. 16. 09:50

[BOJ] 1654 / 랜선 자르기 / Python 파이썬

[BOJ] 1654 / 랜선 자르기 / Python 파이썬

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

 

1654번: 랜선 자르기

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

www.acmicpc.net

 

풀이

이분 탐색의 기본 문제이다.

 

첫 시도는 완전 탐색으로 접근하였지만 당연히 시간초과가 발생 하였다.

가장 기본적인 이분 탐색의 구조로 해결 하였다.

 

import sys
input = sys.stdin.readline


K, N = map(int, input().split())

lines = []

for _ in range(K):
    lines.append(int(input()))

end = max(lines)
start = 1

while start <= end:
    mid = (start+end) // 2
    res = 0

    for l in lines:
        res += l // mid

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

print(end)
Comments