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

Eunding·2024년 10월 10일
0

algorithm

목록 보기
24/107

2805번 나무 자르기

https://www.acmicpc.net/problem/2805

아이디어

1부터 가장 긴 나무 길이까지 이분탐색을 돌면서 조건에 맞는지 찾으면 된다.

한 번 틀렸는데 틀린 이유는 문제에서 절단기의 최댓값이라고 했는데 난 찾자마자 바로 출력했기 때문이다.
=> answer 계속 갱신

코드

n, k = map(int, input().split())
tree = list(map(int, input().split()))
tree.sort()
answer = 0

low = 1
high = tree[-1]
while low <= high:
    mid = (low + high) // 2
    cut = 0
    for i in range(n-1, -1, -1):
        if mid > tree[i]:
            break
        else:
            cut += tree[i] - mid

    if cut >= k: # 절단기의 최댓값
        answer = mid
        low = mid + 1
    else: # cut < k
        high = mid - 1

print(answer)

0개의 댓글