Algorithm/Baekjoon

[Python] 2805. 나무 자르기

느낌표 공장장 2021. 12. 16. 22:55
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