반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
StringBuilder sb = new StringBuilder();
int n;
int[] check;
boolean[] visit;
public void solution() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
visit = new boolean[n];
check = new int[n];
dfs(0);
System.out.println(sb);
}
public void dfs(int depth){
if(depth==n){
for(int a : check){
sb.append(a).append(" ");
}
sb.append("\n");
}
for(int i=0; i<n; i++){
if(!visit[i]){
visit[i] = true;
check[depth] = i+1;
dfs(depth+1);
visit[i] = false;
}
}
}
public static void main(String args[]) throws IOException {
new Main().solution();
}
}
dfs를 활용한다. 방문한 인덱스를 재외하고, 순차적으로 접근하고, 그 값을 저장하고 출력한다.
반응형
'개발 > 알고리즘' 카테고리의 다른 글
백준 10971번 : 외판원 순회 2 (0) | 2023.01.20 |
---|---|
백준 10819번 : 차이를 최대로 (0) | 2023.01.18 |
백준 10973번 : 이전 순열 (0) | 2023.01.18 |
백준 10972번 : 다음 순열 (0) | 2023.01.18 |
백준 2529번 : 부등호 (0) | 2023.01.16 |