문제풀이/이진탐색

@[파이썬] [이진탐색] 백준 2512 예산

승무_ 2022. 12. 21. 12:38

문제

https://www.acmicpc.net/problem/2512

 

2512번: 예산

첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상

www.acmicpc.net

코드

n=int(input())
arr=list(map(int, input().split()))
m=int(input())

start=0
end=1000000001
answer=0;

sum=0
for i in arr:
    sum+=i
if sum<=m:
    print(max(arr))
    exit(0)

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

    temp=0
    for i in arr:
        temp+=min(mid, i)

    if temp<=m:
        start=mid+1
        answer = mid
    else:
        end=mid-1

print(answer)