Algorithm/noj.am

[Python] 백준 2805번 - 나무 자르기

SweetDev 2021. 1. 21. 08:01
import sys
N, M = map(int, sys.stdin.readline().split())
# N: 나무의 수
# M: 집에 가져가려고 하는 나무 길이
data = list(map(int, sys.stdin.readline().split()))

left = 1
right = max(data)
while left <= right:
    mid = (right + left) // 2
    count = 0
    for i in data:
        if i >= mid:
            count += i - mid
        else:
            count += 0
    if count >= M:
        left = mid + 1
    else:
        right = mid - 1

print(right)

Binary Search로 풀면 된다.