1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
K, N = map(int, input().split())
lan = [int(input()) for _ in range(K)]
start, end = 1, max(lan) # start 1 , end 랜선의 max값
while start <= end: # start와 end 값이 교차할 때 까지 돌아
mid = (start + end) // 2 # start와 end 값을 더해서 절반 값으로 시작
lines = 0 # 잘린 랜선의 개수를 누적할 변수
for i in lan: # 랜선을 하나씩 돌아
lines += i // mid # 지정한 중간 값으로 랜선을 자르고 갯수를 담아
if lines >= N: # 랜선의 개수가 우리가 원하는 N값보다 크다면
start = mid + 1 # start의 값을 mid 바로 오른쪽으로 옮겨
else: # 랜선의 개수가 우리가 원하는 N값보다 작다면
end = mid - 1 # end의 값을 mid 바로 왼쪽으로 옮겨
print(end)
댓글