자료구조와 알고리즘/알고리즘
2309
oncerun
2023. 6. 26. 21:43
반응형
백준의 2309 문제를 읽었을 때 조합이 생각났다.
9명 중 7명을 뽑아 키의 합이 100인 경우 통과이며, 가능한 정답이 여러 개인 경우가 있다고 했기 때문에 정답 시 프로그램을 종료 시켜야한다.
이를 기반으로 코드를 작성해보자.
#include <bits/stdc++.h>
using namespace std;
int k = 7;
int n = 9;
int a[9];
void combi(int start, vector<int> b){
if(b.size() == k){
int sum = 0;
for(int height : b) sum += height;
if(sum == 100){
sort(b.begin(), b.end());
for(int height : b) cout << height << '\n';
exit(0);
}
return;
}
for(int i = start + 1; i < n; i ++){
b.push_back(a[i]);
combi(i, b);
b.pop_back();
}
}
int main() {
for(int i =0; i < n; i++) cin >> a[i];
vector<int> b;
combi(-1, b);
return 0;
}
재귀함수를 통해 풀었는데, 3번정도 틀렸다.
반응형