백준|2805번|나무 자르기

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
55/136

문제설명
나무들의 높이와 필요한 나무의 양을 입력받고 어느 높이에서 잘랐을 때 최대한 적은 양을 가져갈수 있는지 출력하는 문제입니다.

작동 순서
1. 나무의 높이와 필요한 양을 입력받습니다.
2. 이진탐색을 활용하기위해 반복문을 실행해줍니다.
3. 자를 높이로 나무를 잘랐을 때 가져가는 나무의 양이 필요한양보다 많아지면 maxLength에 저장합니다.
4. 반복문을 종료하고 maxLength를 출력합니다.

소스코드

import sys
N, M = map(int, sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))
start = 1
final = max(arr)
maxLength = 0
while start <= final:
    mid = (start+final)//2
    tree = sum([i-mid if i > mid else 0 for i in arr])
    if tree >= M:
        start = mid+1
        maxLength = mid
    else:
        final = mid-1
print(maxLength, end='')
profile
INTP 개발자 지망생

0개의 댓글