0. 나무 자르기
백준 링크
1. 알고리즘
1-1. 문제를 보며 생각해야 할 점
- 시간 제한이 1초 이므로 sort를 사용할 수 없음 - 시간 초과가 나지 않도록 조심할 것
- 적어도 m미터 이상 가지고 가야 하므로 남은 나무들의 합이 m보다 작을 수 없다는 경우도 생각할 것
2. 내가 작성한 코드
from sys import stdin as s
from collections import deque
s=open("input.txt","rt")
n,m = map(int,s.readline().split())
list1=list(map(int,s.readline().split()))
list1.sort()
def binary_search(start,end):
while start<=end:
mid = (start+end)//2
sum=0
for i in range(n):
cut=list1[i]-mid
if cut>=0:
sum+= cut
else:
sum+=0
if sum>m:
start=mid+1
elif sum==m:
print(mid)
break
else:
end=mid-1
if sum!=m and sum>m:
print(mid)
elif sum!=m and sum<m:
print(mid-1)
binary_search(0,max(list1))