본문 바로가기

개발/algorithm

[백준 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

풀이 

- 이분 탐색 문제

- start = 1 , end = 가장 긴 랜선의 길이

- 이 때 start를 0으로 설정하면 런타임 에러 발생 

k, n = map(int,input().split())

data = []

for _ in range(k):
  data.append(int(input()))

start = 1
end = max(data)
answer = 0 

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

  for i in data:
    cnt += i // mid 
  
  if cnt < n:
    end = mid - 1 
  else :
    answer = mid
    start = mid + 1 

print(answer)