Programmers/Level 1

C++ / 프로그래머스 / 예산

GitHubSeob 2021. 8. 21. 20:07

문제

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

 

코딩테스트 연습 - 예산

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

programmers.co.kr

문제풀이

부서를 최대로 지원하려면 적은 금액부터 지원해주면 된다.

따라서 정렬을 하고 예산에서 지원해줘야 하는 금액을 차감하면서 answer값을 늘려주면 된다.

예산은 -가 될 수 없으므로 예산과 지원해줘야 하는 금액이 같거나 예산이 더 큰 경우만 실행하도록 조건을 건다.

 

코드

#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> d, int budget) {
    int answer = 0;
    
    sort(d.begin(),d.end());
    
    for(int idx=0;idx<d.size();++idx){
        if(budget>=d[idx]){
            budget-=d[idx];
            answer++;
        }
    }
    return answer;
}