문제 출처
1. 문제설명
- 문제 설명은 매우 장황하지만
- N개의 수가 주어졌을 때, 모든 조합을 구하는 것이다.
2. 알고리즘 설계
- 오름차순이므로, 1부터 시작하다가 6개가 카운팅되면
- 출력해주면 된다.
3. 로직
- DFS 방식을 이용해 구현하였다.
- 배열 6칸에 값을 순차적으로 채우면서,
- 카운팅과 현재 인덱스를 갱신시켜준다.
4. 전체 코드
#include <bits/stdc++.h>
using namespace std;
int n, lotto[14], ans[6];
void dfs(int start, int depth) {
if (depth == 6) {
for (int i = 0; i < 6; i++)
cout << ans[i] << ' ';
cout << '\n';
return;
}
for (int i = start; i < n; i++) {
ans[depth] = lotto[i];
dfs(i + 1, depth + 1);
}
}
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
while (cin >> n && n) {
for (int i = 0; i < n; i++)
cin >> lotto[i];
dfs(0, 0);
cout << '\n';
}
return 0;
}