본문 바로가기
카테고리 없음

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

by developer jini 2022. 7. 11.
728x90

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

 

2805번: 나무 자르기

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

www.acmicpc.net

<문제풀이>

import sys

n, m = map(int, sys.stdin.readline().split())  # 나무의수 n 상근이가 집으로 가져 가려고하는 나무의 길이 m
arr = list(map(int, sys.stdin.readline().split()))

start = 1
end = max(arr)

while start <= end:
    mid = (start + end) // 2
    total = 0
    for i in arr:
        if i >= mid:
            total += i - mid
    if total >= m:  # 오른쪽 탐색
        start = mid + 1
    else:
        end = mid - 1

print(end)
728x90

댓글