문제/백준_파이썬
178. 2805(나무 자르기) - 파이썬
sm_hope
2022. 8. 15. 22:02
※PyPy로 제출한 코드입니다.
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
tree = list(map(int, input().split()))
start = 1
end = max(tree)
while(end - start >= 0):
mid = (start + end) // 2
cutTree = 0
for val in tree:
tmp = val - mid
if(tmp > 0):
cutTree += tmp
if(cutTree >= M):
start = mid + 1
else:
end = mid - 1
print(end)
문제요약
주어진 나무들을 잘라 원하는 크기로 만들고자 한다.
설명
전 문제의 랜선자르기와 굉장히 유사하다.
https://smhope.tistory.com/472?category=1058420
다른 점은
for val in tree:
tmp = val - mid
if(tmp > 0):
cutTree += tmp
자르는 것은 -이다.
잘랐을 경우 음수가 나올 수 있으므로 음수가 아닌 값들만 cutTree에 저장한다.