728x90
[백준] 10974번 - 모든 순열 (JAVA)
[접근 방법]
입력된 N에 따라 1 ~ N 의 수로 이루어진 순열을 모두 출력하는 문제는 <N과 M 시리즈> 와 비슷한 문제였다.
dfs 함수를 생성한 후, N개의 숫자로 이루어진 순열을 중복없이 출력하였다.
[JAVA 코드]
// 10974번 - 모든 순열
import java.util.*;
import java.io.*;
public class Main {
static int[] arr;
static boolean[] visit;
static int N;
static StringBuilder sb;
public static void dfs(int depth){
if (depth == N){
for(int val : arr){
sb.append(val).append(" ");
}sb.append("\n");
return;
}
for(int i=0; i<N; i++){
if(!visit[i]){
visit[i] = true;
arr[depth] = i + 1;
dfs(depth + 1);
visit[i] = false;
}
}
return;
}
public static void main(String[] args) throws IOException {
// 0. 입출력 선언 / 초기화
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
N = Integer.parseInt(br.readLine());
arr = new int[N];
visit = new boolean[N];
sb = new StringBuilder();
// 1. dfs 함수 실행
dfs(0);
// 2. 순열 출력
bw.write(sb.toString());
bw.flush();
br.close();
bw.close();
}
}
[Rewind]
1. 어려웠던 점
-
2. 알게된 점
- dfs 함수에 대해 완전 숙달이 되었다.
3. 개선 방향
- 응용 문제에 도전해야 한다.
728x90
'백준 > 코드 플러스 (알고리즘 기초 - 2) (완)' 카테고리의 다른 글
[백준] 1759번 - 암호 만들기 (JAVA) (0) | 2023.02.20 |
---|---|
[백준] 10819번 - 차이를 최대로 (JAVA) (1) | 2023.02.19 |
[백준] 15663번 - N과 M (9) (!) (JAVA) (0) | 2023.02.15 |
[백준] 15649번 - N과 M (1) (!) (JAVA) (0) | 2023.02.13 |
[백준] 14500번 - 테크로미노 (★) (JAVA) (0) | 2023.02.12 |