업데이트:

카테고리: , ,

1. 문제

문제는 링크에 들어가면 있다.

2. 정답 코드

문제의 내 정답 코드는 다음과 같다.


import sys
read = sys.stdin.readline
N = int(read())
array = list(map(int,read().split()))
array.sort()
budget = int(read())

start = 0
end = max(array)

while start <= end :

    mid = (start+end)//2
    s = 0
    for a in array:
        if a >= mid :
            s += mid
        else :
            s += a
    if s >= budget :
        end = mid-1
    else :
        start = mid + 1

print(end)





3. 풀이 및 생각


문제 풀이

매우 평범한 이진탐색 문제이므로 풀이는 생략.


나의 생각

이진 탐색에서 언제 end를 출력해야하고 언제 mid를 출력하고 언제 start를 출력하는지, 그리고 >= , <의 기준에 대해 좀 자세히 알아볼 필요가 있다.

최대 1 분 소요