https://school.programmers.co.kr/learn/courses/30/lessons/12982
일단 d를 오름차순으로 정렬 ( 작은값부터 더하는게 가장 횟수가 많다) 더해가면서 budget을 넘으면 i반환(해당 인덱스 더하기 전의 더한 횟수) , 딱 맞아 떨어지면 i + 1반환
for문을 탈출하면(다 더해서 딱맞아떨어지거나 budget보다 작은 경우) d의 size() 반환
#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> d, int budget) {
int answer = 0;
sort(d.begin(), d.end());
int sum = 0;
for(int i = 0; i < d.size(); i++)
{
sum += d[i];
if(sum > budget)
return i;
else if(sum == budget)
return i + 1;
}
return d.size();
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> d, int budget) {
sort(d.begin(), d.end());
int i;
for (i = 0; (budget=budget-d[i]) >= 0 && i < d.size(); i++) ;
return i;
}
하나하나 더해가면서 비교하지 않고 budget에서 빼가면서 계산하였다.