1) 이건 test case 갯수를 입력으로 받지 않고 0이 나오면 끝나게 해야했다. 그 부분을 잘 몰랐는데 while문으로 구현하면 된다.
2) 조합을 만드는 문제는 탐색으로 풀면 된다. 1차원배열 탐색을 하면되고 dfs로 풀었다. 이전에 풀었던 알파벳문제와 유사했다.
3)종료조건: 6글자를 다 채웠을때 출력하고 return한다.
4)이 포스팅의 구현을 보고 따라했고 이전에 알파벳풀었을 때는 visit을 표시했던 것과 다르게 엄청 코드가 간단하다.... 하지만 어려워ㅠㅠㅠㅠ
#include<iostream>
using namespace std;
int num;
int lotto[14];
int ans[6];
void dfs(int start, int depth) {
//종료조건
if (depth == 6) {
for (int i = 0; i < 6; i++) {
cout << ans[i] << " ";
}
cout << endl;
return;
}
//재귀: 재귀가 return 되면 다시 다음문자에 대해 dfs
for (int i = start; i < num; i++) {
ans[depth] = lotto[i];
dfs(i + 1, depth+1);
}
}
int main() {
while (cin >> num && num) {
for (int i = 0; i < num; i++) {
cin >> lotto[i];
}
dfs(0, 0);
cout << endl;
}
return 0;
}
'Programming > BOJ' 카테고리의 다른 글
[백준/C++] 7579번: 토마토 (0) | 2020.08.24 |
---|---|
[백준/C++] 2644번: 촌수계산 (0) | 2020.08.19 |
[백준/C++] 7562번: 나이트의 이동 (0) | 2020.08.12 |
[백준/C++] 14503번: 로봇청소기 (DFS/구현) (0) | 2020.08.10 |
[백준/C++] 백준 10026번: 적록색약 (0) | 2020.08.10 |