https://www.acmicpc.net/problem/1654
이진 탐색으로 풀 수 있는 문제였다.
랜선 개수와 목표 랜선 개수를 비교해서 start 또는 end 지점을 바꿔가며 해결했다.
# 1654 : 랜선 자르기
import sys
input = sys.stdin.readline
k, n = map(int, input().split())
lan = [int(input()) for _ in range(k)]
start = 1
end = max(lan)
result = 0
while start <= end:
total = 0
mid = (start + end) // 2
for x in lan:
total += (x // mid)
# 랜선 만든 경우
if total >= n:
result = mid
start = mid + 1
# 랜선 못 만든 경우
else:
end = mid - 1
print(result)
Uploaded by Notion2Tistory v1.1.0