ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [jungol]주사위던지기1
    알고리즘문제풀이 2021. 10. 16. 12:21

    --문제--

    https://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=449&sca=2080 

     

    JUNGOL

     

    www.jungol.co.kr

    --문제풀이--

    문제는 중복조합, 순열을 구현할 수 있는가를 물어보는 문제입니다.

     

    --코드--

    package Jungol;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class 주사위던지기1 {
    	static int N,M;
    	static int[] num;
    	static boolean[] check;
    	static int[] number= {1,2,3,4,5,6};
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		N=sc.nextInt();
    		M=sc.nextInt();
    		num=new int[N];
    		check=new boolean[7];
    		switch(M) {
    		case 1:
    			dice1(0);
    			break;
    		case 2:
    			dice2(0,1);
    			break;
    		case 3:
    			dice3(0);
    			break;
    		default :
    			break;
    		}
    	}
    	private static void dice3(int level) {
    		if(level==N) {
    			for(int i=0;i<N;i++) {
    				System.out.print(num[i]+" ");
    			}
    			System.out.println();
    			return;
    		}
    		for(int i=1;i<=6;i++) {
    			if(!check[i]) {
    				num[level]=i;
    				check[i]=true;
    				dice3(level+1);
    				check[i]=false;
    			}
    		}
    		
    	}
    	private static void dice2(int level, int start) {
    		if(level==N) {
    			for(int i=0;i<N;i++) {
    				System.out.print(num[i]+" ");
    			}
    			System.out.println();
    			return;
    		}
    		for(int i=start;i<=6;i++) {
    			num[level]=i;
    			dice2(level+1,i);
    		}
    		
    	}
    	private static void dice1(int level) {
    		if(level==N) {
    			for(int i=0;i<N;i++) {
    				System.out.print(num[i]+" ");
    			}
    			System.out.println();
    			return;
    		}
    		for(int i=1;i<=6;i++) {
    			num[level]=i;
    			dice1(level+1);
    		}
    	}
    	
    	
    	
    	
    }

     

    '알고리즘문제풀이' 카테고리의 다른 글

    [BOJ]2609_최대공약수와 최소공배수_Java  (0) 2021.05.19
Designed by Tistory.