loading
본문 바로가기
Knowledge/기초수학

[ BASIC MATH ] 02. 경우의 수 _ with java

by NeuLyeo 2023. 11. 22.

[ BASIC MATH ] 02. 경우의 수 _ with java

 

 

 

📚 Table of Contents

     

     

     

     

    개념

     

    [ BASIC MATH ] 02. 경우의 수( number of cases )

    [ BASIC MATH ] 02. 경우의 수( number of cases ) 📚 Table of Contents 경우의 수 1회의 시행을 통해 일어날 수 있는 사건의 가짓수가 N개 일 때, 그 사건의 경우의 수를 N 이라고 한다. 사건 A가 일어날 경우의

    leungnyeok.tistory.com

     

     

     

     

    합의 법칙

     

    배열을 이용하여 구현

    import java.util.ArrayList;  
    import java.util.Arrays;  
    import java.util.HashSet;  
    
    public class NumberOfCases {  
        public static void main(String[] args){  
            // 합의 법칙  
            // 두 개의 주사위를 던졌을 때 합이 3 또는 4의 배수일 경우의 수  
            int[] dice1 = {1, 2, 3, 4, 5, 6};  
            int[] dice2 = {1, 2, 3, 4, 5, 6};  
    
            int nA = 0;  
            int nB = 0;  
            int nAandB = 0;  
    
            for (int item1 : dice1) {  
                for (int item2 : dice2) {  
                    // 주사위 1,2 의 합이 3의 배수인 경우
                    if((item1 + item2) % 3 ==0){  
                        nA += 1;  
                    }  
                    // 주사위 1,2 의 합이 4의 배수인 경우
                    if((item1 + item2) % 4 ==0){  
                        nB += 1;  
                    }  
                    // 3의 배수, 4의 배수 모두 해당하는 경우
                    if((item1 + item2) % 12 ==0){  
                        nAandB += 1;  
                    }  
                }  
            }
            // A의 경우 + B의 경우 - A,B 중복 = 12 + 9 - 1 = 20   
            System.out.println("결과 : " + (nA + nB - nAandB));
    	}
    }

     

     

     

     

     

    HashSet을 이용하여 구현

     

    HashSet은 중복을 자동으로 제거하기 때문에 중복을 뺄 필요 없다.

     

    public class NumberOfCases {  
        public static void main(String[] args){  
        
        	// HashSet 으로 합의 법칙 구현
            HashSet<ArrayList> allCase = new HashSet<>();  
    
            for (int item1: dice1) {  
                for (int item2: dice2) {  
                    // 두 주사위의 합이 3의 배수 또는 4의 배수인 경우
                    if((item1 + item2) % 3 == 0 || (item1 + item2) % 4 == 0){
                    	// 두 주사위의 수를 원소로 담은 배열 생성
                        ArrayList list = new ArrayList(Arrays.asList(item1, item2));  
                        
                        // hashset에 배열 추가, 자동으로 중복 배열 제거
                        allCase.add(list);  
                    }  
                }  
            }  
            System.out.println("결과 : " + allCase.size());
            // 결과 : 20
    	}
    }

     

     

     

     

     

    곱의 법칙

    public class NumberOfCases {  
        public static void main(String[] args){ 
        	// 곱의 법칙  
            // 두 개의 주사위를 a, b를 던졌을 때 a는 3의 배수, b는 4의 배수인 경우으 수  
            nA = 0;  
            nB = 0;  
    
            for (int item1: dice1) {
                // 주사위 a 가 3의 배수인 경우  
                if(item1 % 3 == 0) {  
                    nA++;  
                }  
            }  
            for (int item1: dice2) {  
                // 주사위 b 가 4의 배수인 경우
                if (item1 % 4 == 0) {  
                    nB++;  
                }  
            }  
            System.out.print("결과 : "+ (nA * nB));  
            // 결과 : 2
        }  
    }