이진탐색 사용
# 백준 2512번 예산
N = int(input())
array = list(map(int, input().split()))
M = int(input())
start = 0
end = max(array)
while start <= end:
budget = M
mid = (start + end) // 2
for x in array:
if x > mid: # 예산요청 금액이 상한액보다 클 경우
budget -= mid # 상한액만큼 차감
else: # 예상요청 금액이 상한액보다 작은 경우
budget -= x # 예상요청 금액만큼 차감
if budget < 0: # 예산이 -가되면
end = mid - 1 # 상한액을 줄인다
else: # 예산이 남는다면
result = mid # result에 상한액 저장하고
start = mid + 1 # 상한액을 늘리기
print(result)
Uploaded by Notion2Tistory v1.1.0