• 순열 조합 주사위 테스트 JAVA

    2021. 10. 30.

    by. 순일

     

    순열 조합을 응용하여 주사위 3개를 던질 때 경우의 수를 테스트해보았다.

     

    순열 - 주사위를 3번 던져서 모두 다른 수가 나올 수 있는 모든 경우

    [1, 2, 3] [1, 2, 4] [1, 2, 5] ... [1, 3, 2] ... [6, 5, 4]

     

    import java.util.Arrays;
    
    public class 주사위순열 {
    
    	static int[] out = new int[3];
    	static boolean[] select = new boolean[6];
    	public static void main(String[] args) {
    		
    		perm(0);
    	}
    	static void perm(int index) {
    		if(index == 3) {
    			System.out.println(Arrays.toString(out));
    			return;
    		}
    		for (int i = 0; i < 6; i++) {
    			if(select[i]) continue;
    			
    			out[index] = i+1;
    			select[i] = true;
    			perm(index+1);
    			select[i] = false;
    		}
    	}
    }

     

    중복 순열 - 주사위를 3번 던져서 나올 수 있는 모든 경우

    [1, 1, 1] [1, 1, 2] [1, 1, 3] ... [1, 2, 1] ....[6, 6, 6]

     

    import java.util.Arrays;
    
    public class 주사위중복순열 {
    
    	static int[] out = new int[3];
    	
    	public static void main(String[] args) {
    		
    		perm(0);
    	}
    	static void perm(int index) {
    		if(index == 3) {
    			System.out.println(Arrays.toString(out));
    			return;
    		}
    		for (int i = 0; i < 6; i++) {
    			out[index] = i+1;
    			perm(index+1);
    		}
    	}
    }

     

    조합 - 주사위를 3번 던져서 모두 다른 수가 나올 수 있는 모든 경우 단, 같은 수는 가 연속 나오는 경우는 없다.

    [1, 2, 3] [1, 2, 4] [1, 2, 5] ... [1, 3, 4] ... [4, 5, 6]

     

    import java.util.Arrays;
    
    public class 주사위중복조합 {
    
    	static int[] out = new int[3];
    	
    	public static void main(String[] args) {
    		
    		comb(0,0);
    	}
    	static void comb(int start, int index) {
    		if(index == 3) {
    			System.out.println(Arrays.toString(out));
    			return;
    		}
    		for (int i = start; i < 6; i++) {
    			out[index] = i+1;
    			comb(i+1, index+1);
    		}
    	}
    }

     

    중복조합 - 주사위를 3번 던져서 모두 다른 수가 나올 수 있는 모든 경우 단, 1 1 2 과 1 1 은 같은 수로 본다.

    [1, 1, 1] [1, 1, 2] ... [1, 1, 6] ... [1, 2, 2] ... [6, 6, 6]

     

    import java.util.Arrays;
    
    public class 주사위중복조합 {
    
    	static int[] out = new int[3];
    	
    	public static void main(String[] args) {
    		
    		comb(0,0);
    	}
    	static void comb(int start, int index) {
    		if(index == 3) {
    			System.out.println(Arrays.toString(out));
    			return;
    		}
    		for (int i = start; i < 6; i++) {
    			out[index] = i+1;
    			comb(i, index+1);
    		}
    	}
    }

     

    728x90

    댓글