알고리즘 풀이/프로그래머스

[Level 1] 예산

mhko411 2021. 11. 9. 20:02
728x90

https://programmers.co.kr/learn/courses/30/lessons/12982?language=python3 

 

코딩테스트 연습 - 예산

S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는

programmers.co.kr


접근

예산 내에서 최대한 많은 부서의 물품을 지원해주어야 한다. 이를 위해 그리디로 접근을 하였다. 먼저 신청금액을 오름차순으로 정렬하고 신청금액이 작은 순서부터 탐색하여 예산에서 빼준다. 빼준 값이 0이상일 때 최종해를 증가시켰다.

 

구현

- 먼저 부서들이 신청한 금액이 들어있는 d를 오름차순으로 정렬한다.

- 이제 d의 원소를 하나씩 접근하여 현재 남은 예산에서 원소를 빼주고

- 0 이상일 때 answer를 증가시킨다.

- 이후 현재의 cost만큼 예산에서 빼준다.

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

 

'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

[Level 2] 배달  (0) 2021.11.08
[Level 2] 행렬의 곱셈  (0) 2021.09.27
[Level 2] 2개 이하로 다른 비트  (0) 2021.09.27
[Level 2] 압축  (0) 2021.09.23
[Level 2] 쿼드압축 후 개수 세기  (0) 2021.09.15