본문 바로가기

알고리즘 삽질장

[프로그래머스] 예산

반응형


문제설명

https://programmers.co.kr/learn/courses/30/lessons/12982

 

코딩테스트 연습 - 예산

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

programmers.co.kr

사고과정

  • 최대한 많은 부서의 물품을 구매해 줄 수 있도록 이라는 문장에서 그리디 유형이라는 것을 예상했다. 그리고 그리디는 정렬 과 자주 연계되기 때문에 정렬도 같이 생각함!
  • 문제에서 부서별로 신청한 금액이 d 배열로 주어지는데, 예산 안에서 최대한 많은 부서에 지원해야 하니까 d 배열을 오름차순으로 정렬한 뒤 d를 for loop를 돌면서 예산을 차감하다가 0보다 작아지는 순간 break하면 된다. 0보다 크거나 같을 경우에는 계속 지원가능한 부서 카운트 +1 해준다

풀이

def solution(d, budget):
    # 정렬
    d.sort()
    cnt = 0
    for x in d:
        if budget - x >= 0:
            budget -= x
            cnt += 1
        else:
            break
    return cnt
반응형