Algorithm/Algorithm
순열 (Permuation)
Jyuni
2023. 2. 14. 22:10
순열
순열은 서로 다른 n개의 값 중에서 r개의 숫자를 뽑는 경우의 수를 의미한다.
static int K;
static int[] arr, result;
static boolean[] visited;
// 순열
public static void main(String[] args) {
arr = new int[]{1, 2, 3};
K = 2; // 뽑는 개수
result = new int[K];
visited = new boolean[arr.length]; //배열의 개수만큼 초기화
permutation(0);
}
public static void permutation(int cnt) {
if (cnt == K) {
System.out.println(Arrays.toString(result));
return;
}
for (int i = 0; i < arr.length; i++) {
if (!visited[i]) {
visited[i] = true;
result[cnt] = arr[i];
permutation(cnt + 1);
visited[i] = false;
}
}
}
/* 출력
[1, 2]
[1, 3]
[2, 1]
[2, 3]
[3, 1]
[3, 2]
*/
중복 순열
중복 순열은 서로 다른 n개의 값 중에서 중복이 가능하게 r개의 숫자를 뽑는 경우의 수를 의미한다.
static int K;
static int[] arr, result;
// 순열
public static void main(String[] args) {
arr = new int[]{1, 2, 3};
K = 2; // 뽑는 개수
result = new int[K];
permutation(0);
}
public static void permutation(int cnt) {
if (cnt == K) {
System.out.println(Arrays.toString(result));
return;
}
for (int i = 0; i < arr.length; i++) {
result[cnt] = arr[i];
permutation(cnt + 1);
}
}
/* 출력
[1, 1]
[1, 2]
[1, 3]
[2, 1]
[2, 2]
[2, 3]
[3, 1]
[3, 2]
[3, 3]
*/