하루일문

[백준] 2512번 예산(python) 본문

algorithm/baekjoon

[백준] 2512번 예산(python)

support_u 2023. 4. 21. 09:31

문제

 

2512번: 예산

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

www.acmicpc.net

코드

import sys
input = sys.stdin.readline

n = int(input())
tax = list(map(int, input().split()))
limit = int(input())

start, end = 0, max(tax)

while start <= end:
    total_tax = 0
    mid = (start + end) // 2
    # 상한선을 mid로 하고 mid보다 큰수를 제한해준다
    for i in tax:
        total_tax += min(mid, i)
    # total_tax가 예산보다 클거나 같다면 경우는 start를 줄여서 mid 값을 늘여준다
    if limit >= total_tax:
        start = mid + 1
    # 예산보다 작을경우 end를 줄여서 mid값을 줄여준다.
    else:
        end = mid -1
print(end)