n ,m = map(int, input().split())
l = list(map(int, input().split()))
start, end = 1, max(l)
ans = 0
while start <= end:
mid = (start+end)// 2
log = 0
for i in l:
if i >= mid:
log += i - mid
if log >= m:
ans = mid
start = mid + 1
else:
end = mid - 1
print(ans)
이분탐색을 이용하여 푸는 문제였다
아직 미숙해서 print(end)보다는 ans 로 따로 값에 대한 변수를 정해놓는게
더 직관적인것 같다
'알고리즘' 카테고리의 다른 글
<백준> 2869번 파이썬 알고리즘 (0) | 2021.07.09 |
---|---|
<백준> 2805번 파이썬 알고리즘 (0) | 2021.07.09 |
<백준> 2292번 파이썬 알고리즘 (0) | 2021.07.08 |
<백준> 2775번 파이썬 알고리즘 (0) | 2021.07.08 |
<백준> 2292번 파이썬 알고리즘 (0) | 2021.07.08 |