728x90
반응형
이분 탐색을 활용해서 풀어야 되는 문제이다.
절단기의 높이가 m일 때 가져갈 수 있는 나무의 길이가 M 이상이면 절단기의 높이를 올려도 되므로 s = m + 1
작다면 높이를 내려야 하므로 e = m - 1을 해준다.
def binarySearch(li, M):
s, e = 1, max(li)
ans = 0
while s <= e:
m = (s + e) // 2
t = 0
for n in li:
if n > m:
t += n-m
if t >= M:
s = m + 1
ans = m
else:
e = m - 1
return ans
N, M = map(int, input().split())
li = sorted(list(map(int, input().split())))
print(binarySearch(li, M))
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 10757번 큰 수 A+B(python) (0) | 2021.02.01 |
---|---|
백준 알고리즘 2512번 예산(python) (0) | 2021.01.31 |
백준 알고리즘 1920번 수 찾기(python) (0) | 2021.01.31 |
백준 알고리즘 13305번 주유소(python) (0) | 2021.01.31 |
백준 알고리즘 4796번 캠핑(python) (0) | 2021.01.31 |