일기 대신 코드 슬쩍

백준 2512번 예산 본문

코딩테스트/백준(Python)

백준 2512번 예산

코코자 2023. 3. 16. 18:13

이진탐색 사용

# 백준 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)

'코딩테스트 > 백준(Python)' 카테고리의 다른 글

[그리디] [파이썬] [백준] 11047번 동전0  (0) 2023.03.25
백준 2193번 이친수  (0) 2023.03.25
백준 10815번 숫자 카드  (0) 2023.03.17
백준 11399번 ATM  (0) 2023.03.09
백준 1764번 듣보잡  (0) 2023.03.09