백준 2805번 "나무 자르기"

문제

백준 2805번 나무 자르기


풀이

이분 탐색으로 푼 문제.
1654번문제와 비슷하게 풀었는데 python3로 돌렸을 땐 시간 초과가 뜨고 pypy3로 돌렸을 땐 돌아가는 코드를 작성했다....

나중에 시간이 되면 python3에서도 시간초과가 안뜨도록 수정해봐야 곘다.


Python 코드

import sys
input = sys.stdin.readline

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

l, h = 0, max(tree)

while l <= h:
  mid = (l+h)//2
  leng = 0
  for t in tree:
    if t > mid:
      leng += t - mid
  
  if leng < m:
    h = mid - 1
  else:
    l = mid + 1

print(h)

좋은 웹페이지 즐겨찾기