SW/알고리즘

파이썬 : 프로그래머스 : 예산 : 풀이

얇은생각 2019. 8. 24. 18:30
반응형

풀이

def solution(d, budget):
    answer = 0
    
    d.sort()
    
    for dVal in d:
        budget = budget - dVal
        answer += 1
        if budget < 0:
            break
    
    if budget >= 0:
        return answer
    else:
        return answer -1

 

 

 

실행 결과

정확성 테스트

테스트 1 통과 (0.04ms, 10.6MB)
테스트 2 통과 (0.04ms, 10.6MB)
테스트 3 통과 (0.03ms, 10.7MB)
테스트 4 통과 (0.04ms, 10.7MB)
테스트 5 통과 (0.03ms, 10.7MB)
테스트 6 통과 (0.04ms, 10.7MB)
테스트 7 통과 (0.04ms, 10.6MB)
테스트 8 통과 (0.05ms, 10.8MB)
테스트 9 통과 (0.06ms, 10.7MB)
테스트 10 통과 (0.04ms, 10.8MB)
테스트 11 통과 (0.05ms, 10.7MB)
테스트 12 통과 (0.05ms, 10.7MB)
테스트 13 통과 (0.04ms, 10.8MB)
테스트 14 통과 (0.05ms, 10.9MB)
테스트 15 통과 (0.05ms, 10.7MB)
테스트 16 통과 (0.05ms, 10.7MB)
테스트 17 통과 (0.05ms, 10.7MB)
테스트 18 통과 (0.05ms, 10.7MB)
테스트 19 통과 (0.05ms, 10.6MB)
테스트 20 통과 (0.04ms, 10.6MB)
테스트 21 통과 (0.06ms, 10.8MB)
테스트 22 통과 (0.04ms, 10.7MB)
테스트 23 통과 (0.04ms, 10.6MB)

 

 

 

총평

우선 부서 별로 신청한 금액을 적은 순으로 나열합니다. 그 이유는 최대한 많은 부서에 지원하기 위해서 입니다. 그렇다면 적은 순으로 나열해서 최종 예산에서 뺴나가면 최대 부서 지원 수를 구할 수 있습니다. 다만 주의할 점을 예산이 남은 경우, 딱 맞아 떨어지는 경우, 부족한 경우를 생각해야 한다는 것입니다. 따라서 남은 예산이 남거나 딱 나누어 떨어지는 경우네는 바로 카운트한 answer를 바로 리턴합니다. 만약 예산이 부족한 경우에는 answer에서 1을 빼주어 리턴해서 모든 경우의 수를 만족하였습니다.

반응형