
일단 거의 1달 동안의 프로젝트가 끝나고 이제 부터 다시 시작하는 블로그인것 같다. 이제 한번 시작해보자. 우선 문제부터 보자. 우리가 흔히 아는 백설공주에 나오는 일곱난쟁이를 이용한 문제다. 한번 알고리즘을 한번 생각해보자.
알고리즘
- 9개의 입력을 받아서 저장함.
- 9개의 입력중 7개의 수를 뽑지만 그중 합이 100이 되는 수의 조합만 고름
- 그 고른 수를 오름차순으로 출력
그렇다면 이 알고리즘을 가지고 한번 생각을 해보자. 내가 쓰는 언어는 cpp그렇다면 수 배열의 조합을 구하는 함수인 next_permutation을 이용해 제작을 하면 된다. 밑에는 내가 제작한 스크립트다.
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main() {
vector<int> nan(9), result;
int sum = 0;
//입력 받음
for (int i = 0; i < nan.size(); i++) {
cin >> nan[i];
}
sort(nan.begin(), nan.end());
// 조합을 사용해 7개까지만 조합해 사용
do {
sum = 0;
for (int i = 0; i < 7; i++) {
result.push_back(nan[i]);
sum += nan[i];
}
// 수의 합이 100이 되면 출력하고 멈추기
if (sum == 100) {
//cout << sum;
for (int i = 0; i < result.size(); i++) {
cout << result[i] << "\n";
}
break;
}
// 수의 합이 100이 안되서 result라는 벡터의 크기를 초기화
result.resize(0);
} while (next_permutation(nan.begin(), nan.end()));
}