문제 푼 날짜 : 2021-09-18
문제 링크 : https://www.acmicpc.net/problem/6603
간단한 백트래킹 문제였다.
주어진 배열에서 6개의 숫자를 선택하는 조합을 구현해주었다.
// 백준 6603번 : 로또
#include <iostream>
#include <vector>
using namespace std;
vector<int> v(13), ret(6);
int k;
void dfs(int cnt, int pos) {
if (cnt == 6) {
for (int i = 0; i < 6; i++) {
cout << ret[i] << ' ';
}
cout << '\n';
return;
}
for (int i = pos; i < k; i++) {
ret[cnt] = v[i];
dfs(cnt + 1, i + 1);
}
}
int main() {
while (true) {
cin >> k;
if (k == 0) {
return 0;
}
for (int i = 0; i < k; i++) {
cin >> v[i];
}
dfs(0, 0);
cout << '\n';
}
}
백트래킹적 구현 패턴에 익숙해지도록 더욱 문제를 많이 풀어봐야겠다.