본문으로 바로가기

programmers 예산

category 알고리즘 2019. 9. 9. 13:27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def solution(budgets, M):
    answer = 0
    # 크기 순 정렬
    budgets.sort()
    if sum(budgets) < M:
        return budgets[-1]
    left = 0
    right = budgets[-1]
    while right >= left:
        mid = (left+right)//2
        result = 0
        for bd in budgets:
            if bd<mid:
                result+=bd
            else:
                result+=mid
        if result > M:
            right = mid-1
        else:
            answer = mid
            left = mid+1
    return answer
cs

 

이진탐색을 사용하는 문제였다.

크기 순 정렬은 총합이 예산보다 작을 경우 제일 큰 원소를 리턴하기 위해 사용하였는데,

지금 생각하니 그냥 max()로 해도 됐었던 것 같다.