본문 바로가기
Problem Solving/BOJ

[Binary Search] 2805 나무 자르기

by Bokoo14 2023. 1. 6.

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

 

2805번: 나무 자르기

첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보

www.acmicpc.net

#2023.01.06
import sys
input=sys.stdin.readline

n, m = map(int, input().split())
tree = list(map(int, input().split()))

start = 0
end = max(tree)
while start<=end:
    answer=0
    cut = (start+end)//2
    for i in tree:
        if i>=cut: # 자르고 남은 나무 길이 더해줌
            answer+=(i-cut)
        
    if answer>=m: # 원하는 값보다 크거나 같으면 자를 나무 크기를 늘려봄
        start=cut+1
    else: 
        end=cut-1

print(end)

'Problem Solving > BOJ' 카테고리의 다른 글

[Brute Force] 18111 마인크래프트  (0) 2023.01.07
[Queue] 1966 프린터 큐  (0) 2023.01.07
[BruteForce] 15686 치킨 배달  (0) 2023.01.05
[Sweeping] 2170 선긋기  (0) 2023.01.04
[DP] 12865 평범한 배낭  (0) 2023.01.04