[백준] 2805번 나무 자르기(python)

마뇽미뇽·2025년 7월 14일
0

알고리즘 문제풀이

목록 보기
150/165

1. 문제


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

2. 풀이

기존 랜선 자르기 문제에서 반복문 안에 조건만 변경했다 기준값보다 넘는 경우는 잘라서 가져가기 때문에 조건문을 통해 중간값보다 크다면 중간값을 뺀 나머지 값을 더하도록 하였다.

3. 코드

import sys

n,m = map(int,sys.stdin.readline().split())
tree = list(map(int,sys.stdin.readline().split()))

start = 1
end = max(tree)

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

    for i in tree:
        if i >= mid:
            cnt += i - mid

    if cnt >= m:
        start = mid + 1
    else:
        end = mid - 1
print(end)
profile
Que sera, sera

0개의 댓글