[BOJ] 2805 : 나무 자르기

goblin·2021년 9월 13일
0

알고리즘

목록 보기
10/12

BOJ 1805 : 나무 자르기

이 문제는 이분 탐색을 이용해 최댓값을 찾으면 되는 문제이다.

처음에는 시간 초과가 났었는데 나무의 수가 목표량을 넘어갈 때 brake를 걸어주니 통과됐다.

import sys
n, m = map(int,sys.stdin.readline().split())
array = list(map(int,input().split()))

start = 0
end = max(array)

result=0

while start <= end :
    mid = (start + end) //2
    total = 0

    for x in array:
        if x >= mid:
            total += x-mid
            if total > m:
                break

    if total >= m:
        result = mid
        start = mid +1
    else:
        end = mid -1

print(result)

0개의 댓글