메모리: 81456 KB, 시간: 2172 ms
백트래킹, 브루트포스 알고리즘
2025년 1월 9일 17:47:48
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.
풀이
dfs로 완탐하면 끝이다.
전체 코드
public class Main {
static int N;
static boolean[] visited;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
visited = new boolean[N+1];
dfs(0, new int[N]);
}
public static void dfs(int depth, int[] x){
if(depth == N){
for(int i = 0 ; i < N ; i++){
System.out.print(x[i] + " ");
}
System.out.println();
return;
}
for(int i = 1; i <= N; i++){
if(!visited[i]) {
visited[i] = true;
x[depth] = i;
dfs(depth + 1, x);
visited[i] = false;
}
}
}
}
'코딩 테스트 연습 > 백준' 카테고리의 다른 글
백준 15831번 준표의 조약돌 (java) (1) | 2025.04.30 |
---|---|
백준 7562번 나이트의 이동 (java) (1) | 2025.04.11 |
백준 10973번 이전 순열 (java) (0) | 2024.12.31 |
백준 10972번 다음 순열 (java) (0) | 2024.12.30 |
백준 1759번 암호 만들기 (java) (1) | 2024.12.28 |