반응형
문제 출처: https://www.acmicpc.net/problem/10974
1. 문제 접근방식
먼저 숫자를 담을 배열 arr와 이미 사용한 숫자를 확인하기 위한 selected 배열을 선언하였다.
후에 selected 배열에서 한번 사용했던 숫자면 true로 변경해 주고 재귀의 방식으로 인자를 1 증가시킨 뒤 재호출한다.
이러한 방식을 통해 중복을 방지하여 출력하였다.
2. 내가 푼 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class boj10974 {
static int N;
static int[] arr;
static boolean[] selected;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
input();
rec_func(0);
System.out.println(sb.toString());
}
static void input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
arr = new int[N];
selected = new boolean[N];
}
static void rec_func(int k) {
if (k == N) {
for (int i = 0; i < N; i++) {
sb.append(arr[i]).append(' ');
}
sb.append('\n');
}
for (int i = 0; i < N; i++) {
if (selected[i])
continue;
arr[k] = i + 1;
selected[i] = true;
rec_func(k + 1);
selected[i] = false;
}
}
}
반응형
'개인 공부 > Algorithm' 카테고리의 다른 글
[Baekjoon/백준] 11478 JAVA (0) | 2022.03.14 |
---|---|
[Baekjoon/백준] 17614 JAVA (0) | 2022.03.09 |
[Baekjoon/백준] 1120 JAVA (0) | 2022.03.08 |
[Baekjoon/백준] 1476 JAVA (0) | 2022.03.06 |
[Baekjoon/백준] 4796 JAVA (0) | 2021.08.27 |