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
반응형

+ Recent posts