문제
해결 방안
모든 순열을 출력하는 기본적인 DFS 문제이다.
DFS + 백트래킹을 이용하여 구현하였다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 모든 순열
public class Main {
static int n;
static boolean[] visited;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
visited = new boolean[n+1];
String sNum;
for(int i=1; i<=n; i++) {
visited[i] = true;
sNum = Integer.toString(i);
//System.out.println("sNum: " + sNum);
dfs(sNum, i, 1);
visited[i] = false;
}
}
static void dfs(String sNum, int start, int depth) {
if(depth>=n) {
System.out.println(sNum);
}
else {
for(int i=1; i<=n; i++) {
if(!visited[i]) {
visited[i] = true;
sNum += " "+i;
dfs(sNum, start, depth+1);
sNum = sNum.substring(0, sNum.length()-2);
visited[i] = false;
}
}
}
}
}
'Old > Algorithms' 카테고리의 다른 글
[JAVA] 백준 2178번 : 미로 탐색(BFS+DP) (0) | 2020.10.13 |
---|---|
[JAVA] 백준 2606번 : 바이러스 (DFS) (0) | 2020.10.13 |
[JAVA] 백준 1697번 : 숨바꼭질(BFS) (0) | 2020.10.12 |
[JAVA] 백준 1766번 : 문제집 (위상정렬) (0) | 2020.09.25 |
[JAVA] 백준 2252번 : 줄 세우기 (위상정렬) (0) | 2020.09.25 |