[알고리즘] 재귀를 통한 순열
2024. 1. 30. 11:18ㆍ알고리즘 풀이/Java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int targetDepth = Integer.parseInt(br.readLine());
int[] numbers = new int[targetDepth];
boolean[] isSelected = new boolean[targetDepth];
perm(0, targetDepth, numbers, isSelected);
}
private static void perm(int cnt, int targetDepth, int[] numbers, boolean[] isSelected) {
if (cnt == targetDepth) {
System.out.println("순열 생성 완료");
System.out.println(Arrays.toString(numbers));
}
for (int i = 0; i < targetDepth; i++) {
if (isSelected[i] == true) {
continue;
}
numbers[cnt] = i;
isSelected[i] = true;
perm(cnt + 1, targetDepth, numbers, isSelected);
isSelected[i] = false;
}
}
}
순열은 for문으로 구현할 수 있는데 재귀로 구현하면 nPr에서 r의 값을 인자로 만들 수 있다.
for문으로 하게 되면 r의 값이 반복문의 수가 되어야 한다.
'알고리즘 풀이 > Java' 카테고리의 다른 글
[알고리즘][X] LCS 2 (0) | 2024.01.31 |
---|---|
[알고리즘][X] 스위치 켜고 끄기 (0) | 2024.01.30 |
[알고리즘] Flatten (1) | 2024.01.30 |
[알고리즘] 하노이탑 알고리즘 (0) | 2024.01.30 |
[알고리즘] 게리맨더링 2 (0) | 2024.01.28 |