생각난김에 한번 정리한 것.
변수를 임시로 고정하긴 했지만, 임의의 변수로 입력받으면 순열, 조합, 부분집합을 제대로 구현할 수 있을 것이다.
import java.util.*;
class Solution {
static int numbers[] = new int[3];
static int N = 3;
static int inputs[] = {1, 2, 3, 4};
static boolean[] visit = new boolean[4];
public int solution(int[][] targets) {
int answer = 0;
//perm(0);
//comb(0,0);
subset(0);
return answer;
}
static void subset(int cnt) {
if(cnt == 4) {
for(int i = 0; i < 4; i++) {
if(visit[i]) continue;
System.out.print(inputs[i] + " ");
}
System.out.println();
return;
}
subset(cnt + 1);
visit[cnt] = true;
subset(cnt + 1);
visit[cnt] = false;
}
static void comb(int start, int cnt) {
if(cnt == 3) {
System.out.println(Arrays.toString(numbers));
return;
}
for(int i = start; i < 4; i++) {
numbers[cnt] = inputs[i];
comb(i + 1, cnt + 1);
}
}
static void perm(int cnt) {
if(cnt == 3) {
System.out.println(Arrays.toString(numbers));
return;
}
for(int i = 0; i < 4; i++) {
if(visit[i]) continue;
visit[i] = true;
numbers[cnt] = inputs[i];
perm(cnt + 1);
visit[i] = false;
}
}
}