[백준] 2805번 나무 자르기

데이터 값이 너무 많아서 이진 탐색으로 풀어야했던 문제
최댓값인데 min으로 써서 오류가 났다.

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

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

def binary_search(array,target,start,end):
    global answer
    if start>end:
        print(answer)
        return 
    mid=(start+end)//2
    sum=0
  
    for x in tree:
        if x-mid>0:
            sum+=x-mid

    if sum==target:
        print(mid)
        return 
    elif sum>target:
        answer=max(answer,mid)
        return binary_search(array,target,mid+1,end)
    elif  sum<target:
        return binary_search(array,target,start,mid-1)
   

answer=0
binary_search(tree,m,0,max(tree))

좋은 웹페이지 즐겨찾기