백준 알고리즘 (Baekjoon Algorithm)

[파이썬] 백준 알고리즘 No.2805 나무 자르기

Universe_lee 2023. 2. 17. 22:02

나의 코드

n, m = map(int, input().split())
data = sorted(list(map(int, input().split())))


def binary(arr, start, end):
    if start > end:
        return end

    mid = (start + end) // 2
    count = 0
    for i in arr:
        if mid < i:
            count += (i - mid)

    if count == m:
        return mid
    elif count < m:
        return binary(arr, start, mid - 1)
    else:
        return binary(arr, mid + 1, end)

print(binary(data, 0, max(data)))

 

풀이 방법

이분탐색 랜선 자르기 문제와 유사한 문제