문제 링크
https://www.acmicpc.net/problem/1654
풀이
import sys
K, N = map(int, sys.stdin.readline().split())
lan = [int(sys.stdin.readline()) for _ in range(K)]
def binary_search(lst):
high = max(lst)
low = 1
while low <= high:
mid = (low+high)//2
count = sum([x//mid for x in lan])
if count < N:
high = mid - 1
else:
low = mid + 1
return high
print(binary_search(lan))
이진 탐색으로 해결하였다. binary_search는 1부터 랜선 최대길이까지의 연속된 정수 길이 중에서 특정 길이로 잘랐을 때 랜선의 개수가 N 이상이 되기 시작하는 바로 그 길이를 찾아서 반환한다.
'연습장 > 백준(BOJ) 문제풀이' 카테고리의 다른 글
[백준 1676] 팩토리얼 0의 개수 with Python (0) | 2021.05.17 |
---|---|
[백준 1543] 문서 검색 with Node.js (0) | 2021.05.16 |
[백준 1302] 베스트셀러 with Node.js (0) | 2021.05.15 |
[백준 15652] N과 M (4) with Python (0) | 2021.05.12 |
[백준 3986] 좋은 단어 with Node.js (0) | 2021.05.10 |