순열을 기반한 조합의 요소들 탐색하는 것이 핵심인 문제
💻 [코드 ver.1]
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int a[10];
for(int i = 0 ;i < 9; i++) cin >> a[i];
sort(a, a+9); // 입력값들에 대해 오름차순 정렬
do {
int sum = 0;
for(int i = 0 ; i < 7; i++) sum += a[i]; //9개 요소 중 7개뽑기
if(sum == 100) break; //합이 100이면 그것이 답
}while(next_permutation(a, a+9)); //9개 순열 뽑기
for(int i = 0 ; i < 7; i++) cout << a[i] << "\n";
return 0;
}
💻 [코드 ver.2]
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int a[9];
pair<int, int> ans_index;
int sum;
vector<int> v;
void solve() {
for(int i = 0 ; i < 9; i++) {
for(int j = 0 ; j < i; j++) {
if(sum - a[i] - a[j] == 100) {
ans_index = {i, j};
}
}
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
for(int i = 0; i < 9; i++) {
cin >> a[i]; sum += a[i];
}
solve();
for(int i = 0; i < 9; i++) {
if(ans_index.first == i || ans_index.second == i) continue;
v.push_back(a[i]);
}
sort(v.begin(), v.end());
for(int i : v) cout << i << " ";
return 0;
}