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 |