n, m = map(int, input().split()) # 나무의 수 n, 나무의 길이 m
tree_h = list(map(int, input().split()) # 나무의 높이
s, e = 1, max(tree_h) # 시작 높이, 끝 높이
while s <= e:
mid = (s + e) // 2 # 자를 높이
temp = 0 # 잘린 나무
for tree in tree_h:
if tree >= mid: # mid보다 큰 나무라면 자르기
temp += tree - mid
# temp == m: break 하면 안됨. 절단기의 높이를 더 높일 수 있기 때문
if temp >= m: # 목표 나무 길이보다 크다면 절단기 높이기
s = mid + 1
else: # 목표 나무 길이보다 작다면 절단기 낮추기
e = mid - 1
print(e)
'Algorithm > Baekjoon' 카테고리의 다른 글
[Python] 1244. 스위치 켜고 끄기 (0) | 2021.12.16 |
---|---|
[Python] 10026. 적록색약 (0) | 2021.12.16 |
[Python] 9251. LCS (0) | 2021.12.16 |
[Python] 12865. 평범한 배낭 (0) | 2021.12.16 |
[Python] 1806. 부분 합 (0) | 2021.12.16 |