2512 예산
업데이트:
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를 출력하는지, 그리고 >= , <의 기준에 대해 좀 자세히 알아볼 필요가 있다.