S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다.
물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.
부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요.
| d | budget | result |
|---|---|---|
| [1,3,2,5,4] | 9 | 3 |
| [2,2,3,3] | 10 | 4 |
def solution(d, budget):
answer = 0
total = 0
d.sort()
for i in d:
total += i
if total > budget:
break
answer += 1
return answer
금액이 적은 부서부터 더해서 최대한 많은 부서를 지원해 줄 수 있도록 해야 한다. 이를 위해 오름차순으로 정렬해주는 메서드 sort()를 사용하여 배열 d를 정렬해준 후, for문을 돌려서 0으로 초기화한 total 변수에 d의 요소를 받는 i를 더해준다. 그리고 if 조건문을 사용하여 신청 금액의 합이 예산보다 크다면 반복문을 빠져나와 지원 가능한 부서의 수 answer를 리턴하고, 아니라면 answer를 1씩 증가시킨다.