πŸ—οΈ Algorithm/🟩 λ°±μ€€

🟩 [λ°±μ€€] [Python] [Silver3] 2512번_μ˜ˆμ‚°

Dbswnstjd 2023. 4. 22. 15:18

문제

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

 

2512번: μ˜ˆμ‚°

첫째 μ€„μ—λŠ” μ§€λ°©μ˜ 수λ₯Ό μ˜λ―Έν•˜λŠ” μ •μˆ˜ N이 주어진닀. N은 3 이상 10,000 μ΄ν•˜μ΄λ‹€. λ‹€μŒ μ€„μ—λŠ” 각 μ§€λ°©μ˜ μ˜ˆμ‚°μš”μ²­μ„ ν‘œν˜„ν•˜λŠ” N개의 μ •μˆ˜κ°€ λΉˆμΉΈμ„ 사이에 두고 주어진닀. 이 값듀은 λͺ¨λ‘ 1 이상

www.acmicpc.net

풀이

# λ°±μ€€ 2512번 문제 - μ˜ˆμ‚°
n = int(input())
money = list(map(int, input().split()))
budget = int(input())
start, end = 0, max(money)

def binary(money):
    start = 0
    end = max(money)
    while start <= end:
        mid = (start + end) // 2
        cnt = 0
        for i in money:
            if i >= mid:
                cnt += mid
            else:
                cnt += i

        if cnt <= budget:
            start = mid + 1
        else:
            end = mid - 1
    return end

print(binary(money))

기본적인 이진탐색 λ¬Έμ œμ΄λ‹€. 

μ΄μ§„νƒμƒ‰μ΄μ–΄μ„œ 정렬을 ν•΄μ•Όλœλ‹€κ³  μƒκ°ν–ˆλŠ”λ° μ–΄μ°¨ν”Ό λͺ¨λ“  λˆμ„ ν™•μΈν•˜κ³  λ”ν•΄μ€˜μ„œ μ •λ ¬ν•  ν•„μš”κ°€ μ—†μ—ˆλ‹€.