순열
순열은 서로 다른 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]
*/
'Algorithm > Algorithm' 카테고리의 다른 글
[Algorithm] 이분 탐색 (Binary Search) (0) | 2023.08.21 |
---|---|
그래프 탐색 (DFS & BFS) (0) | 2023.02.15 |
조합 (Combination) (0) | 2023.02.14 |