https://school.programmers.co.kr/learn/courses/30/lessons/12982
0. Headers
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
- accumulate 사용하기 위해 numeric 사용
1. 알고리즘
- 신청한 값을 다 더한 값이 예산 값과 같으면 배열의 사이즈 값
int solution(vector<int> v, int budget) {
if (std::accumulate(v.begin(), v.end(), 0) == budget) return v.size();
}
- 위의 방식에서 같지 않으면 배열을 정렬을 해 하나씩 더해가면서 예산 값이 넘어가면 종료
int solution(vector<int> v, int budget) {
int answer = 0;
sort(v.begin(), v.end(), [=](int a, int b){return a < b;});
for (int i = 0; i < v.size(); i++)
{
answer += v[i];
if (answer > budget) return i;
}
}
2. 완성 코드
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
int solution(vector<int> v, int budget) {
if (std::accumulate(v.begin(), v.end(), 0) == budget) return v.size();
int answer = 0;
sort(v.begin(), v.end(), [=](int a, int b){return a < b;});
for (int i = 0; i < v.size(); i++)
{
answer += v[i];
if (answer > budget) return i;
}
}
'C++ Algorithm & Study > C++ & Algorithm Strategies' 카테고리의 다른 글
[Programmers] 프린터 (0) | 2023.01.05 |
---|---|
[Programers] 같은 숫자는 싫어 (0) | 2023.01.04 |
[Porgrammers] 영어 끝말잇기 (0) | 2022.12.17 |
[Porgrammers] 숫자의 표현 (0) | 2022.12.16 |
[Porgrammers] 최솟값 만들기 (0) | 2022.12.16 |