백준 문제 링크
기타 레슨
아래 그림을 참고하면 된다.
이 과정으로 블루레이의 최솟값은 17임을 알 수 있다.
N, M = map(int,input().split())
array = list(map(int,input().split()))
start = max(array) # 블루레이 최소 크기
end = sum(array) # 블루레이 최대 크기
answer = 0
while start <= end:
mid = (start + end) // 2
total = 0
cnt = 1
for i in array:
if total + i > mid:
cnt += 1
total = 0
total += i
if cnt <= M:
answer = mid
end = mid - 1
else:
start = mid + 1
print(start)