문제/백준_파이썬

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 

 

177. 1654(랜선 자르기) - 파이썬

import sys input = sys.stdin.readline K, N = map(int, input().split()) lanLine = list(int(input()) for _ in range(K)) start = 1 end = max(lanLine) while(end - start >= 0): mid = (start + end) // 2 l..

smhope.tistory.com

다른 점은 

    for val in tree:
        tmp = val - mid
        if(tmp > 0):
            cutTree += tmp

자르는 것은 -이다.

잘랐을 경우 음수가 나올 수 있으므로 음수가 아닌 값들만 cutTree에 저장한다.