순열과 조합 코드 정리
import java.io.*;
import java.util.*;
class Solution {
static int[] arr = { 2, 3, 4, 5 };
static int cnt;
static int n = arr.length;
static int m = 2;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = 3;// arr개 중에 n개 뽑기
int[] tmp = new int[N];
boolean[] visit = new boolean[arr.length];
// 순열
System.out.println("순열");
permutation(0, N, tmp, visit);
// 조합
// 4개 중 2개 뽑기
System.out.println("조합");
int[] comb = new int[m];
combination(0, 0, comb);
}
private static void permutation(int cur, int N, int[] tmp, boolean[] visit) {
if (cur == N) {
System.out.println(Arrays.toString(tmp));
return;
}
for (int i = 0; i < arr.length; i++) {
if (!visit[i]) {
visit[i] = true;
tmp[cur] = arr[i];
permutation(cur + 1, N, tmp, visit);
visit[i] = false;
}
}
}
private static void combination(int cnt, int s, int[] comb) {
if (cnt == m) {
System.out.println(Arrays.toString(comb));
return;
}
for (int i = s; i < n; i++) {
comb[cnt] = arr[i];
combination(cnt + 1, i + 1, comb);// i+1 이다 !!!!
}
}
}