Coding Problem/프로그래머스

[프로그래머스/Lv1] - 예산

마탁이 2021. 4. 25. 20:00

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

 

코딩테스트 연습 - 예산

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

programmers.co.kr

  • 간단히 정렬 후 budget 보다 커지면 loop를 멈추는 식으로 계산할 수 있다.

더보기
#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>

using namespace std;

int solution(vector<int> d, int budget) {
    int answer = 0;

    const int dSize = d.size();
    for (int lhs = 0; lhs < dSize; lhs++)
    {
        for (int rhs = 0; rhs < dSize; rhs++)
        {
            if (lhs == rhs)
                continue;

            int& lhsVal = d[lhs];
            int& rhsVal = d[rhs];

            if (lhsVal < rhsVal)
            {
                int temp = lhsVal;
                lhsVal = rhsVal;
                rhsVal = temp;
            }
        }
    }

    int sum = 0;
    int cnt = 0;
    for (int idx = 0; idx < dSize; idx++)
    {
        int checkVal = sum + d[idx];
        if (checkVal > budget)
        {
            break;
        }
        else
        {
            sum = checkVal;
            cnt++;
        }
    }
    answer = cnt;

    return answer;
}

int main()
{
    vector<int> d = {1,3,2,5,4};
    int budget = 9;
    int ans = solution(d, budget);
    printf("%d\n", ans);

    return 0;
}