순조부

블랑·2023년 5월 12일
0

자유로운 게시판

목록 보기
2/2

생각난김에 한번 정리한 것.
변수를 임시로 고정하긴 했지만, 임의의 변수로 입력받으면 순열, 조합, 부분집합을 제대로 구현할 수 있을 것이다.

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;
        }
    }
}
profile
안녕하세요.

0개의 댓글