문제 주소: https://www.acmicpc.net/problem/2512
난이도: silver 3
#첫번째 케이스
if sum(requests) <= budget:
return print(max(requests))
#두번째 케이스
low = 0 #이거를 min(requests)로 하면 틀린다
high = max(requests)
while low <= high:
total = 0
mid = (low + high) // 2
for request in requests:
if mid >= request:
total += request
else:
total += mid
if total > budget: #가능 지출보다 크면
high = mid - 1 #상한을 낮춤
else: #가능 지출보다 작으면
low = mid + 1 #하한을 높힘
return print(high)
N = int(input())
requests = list(map(int,input().split()))
budget = int(input())
def find_budget(requests, budget):
if sum(requests) <= budget:
return print(max(requests))
else:
low = 0
high = max(requests)
while low <= high:
total = 0
mid = (low + high) // 2
for request in requests:
if mid >= request:
total += request
else:
total += mid
if total > budget: #가능 지출보다 크면
high = mid - 1
else: #가능 지출보다 작으면
low = mid + 1
return print(high)
find_budget(requests, budget)