728x90
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
K, N = map(int, sys.stdin.readline().split())
lan = list()
max_lan = 0
for i in range(K):
cur_lan = int(sys.stdin.readline().strip())
lan.append(cur_lan)
max_lan = max(max_lan, cur_lan)
def cur_lan(length):
result = 0
for lan_length in lan:
result += (lan_length // length)
return result
left, right = 0, max_lan
while left <= right:
mid = (left + right) // 2
mid = max(1, mid)
lan_count = cur_lan(mid)
if lan_count >= N:
left = mid + 1
else:
right = mid - 1
print(right)
'알고리즘 > 이분탐색' 카테고리의 다른 글
백준 1253 좋다 (Python) (0) | 2024.03.10 |
---|---|
백준 2110 공유기 설치 (Python) (0) | 2024.03.10 |
백준 2805 나무 자르기 (Python) (0) | 2024.03.10 |