# 문제 링크
처음에는 순열 출력 구현에 애를 먹었지만, 코드를 보고나서 충격을 받아 외워버렸습니다. 1부터 N까지 DFS를 호출하는데, 출력시에 숫자를 중복해서 넣지 않도록 check 배열을 만들어서 확인해줍니다. 이후 출력을 한 뒤에는 다시 해당 숫자를 쓸 수 있도록 check를 초기화해줍니다.
# 제출 코드
# include <iostream>
using namespace std;
int N;
bool check[10];
int num[10];
void DFS(int node){
if (node >= N) {
for(int i = 0; i < N; i++){
cout << num[i] << ' ';
}
cout << '\n';
return;
}
for(int i = 1; i<=N; i++){
if(check[i] == true) continue;
check[i] = true;
num[node] = i;
DFS(node + 1);
check[i] = false;
}
}
int main() {
cin >> N;
DFS(0);
return 0;
}
반응형
'Computer Science&Engineering > 코딩테스트' 카테고리의 다른 글
[백준 15650] N과 M (2) #조합 (0) | 2021.03.13 |
---|---|
[백준 15649] N과 M (1) (0) | 2021.03.13 |
[백준 1260] DFS와 BFS (0) | 2021.03.09 |
[백준 9095] 1, 2, 3 더하기 반복문 풀이, 재귀적 풀이 (0) | 2021.03.07 |
[백준 1406] 에디터 (0) | 2021.02.24 |