Hyunebee

경우의 수 본문

zerebase/기초수학

경우의 수

Hyunebee 2022. 3. 28. 19:15

경우의 수

어떠한 사건이 일어날 수 있는 가짓수

 

1.합의 법칙(n(A)∪n(B) => n(A) + n(B) - n(A∩B))

 사건 A 또는 B가 일어날 확률 (사건 A따로 B따로 or)

 

2.곱의 법칙(n(A x B) => n(A) x n(B))

 사건 A 와 B가 동시에 일어날 확률(And)

 

 

대표적인 문제(약수구하기, 최소공배수, 최대공약수)

 

import java.util.ArrayList;

public class Practice {
    //약수
    public ArrayList getDivisor(int num){
        ArrayList arrayList = new ArrayList();

        for(int i=1; i <= num; i++){ // 0으로는 나눗셈 x 1시작
            if(num % i == 0){ // 나머지가 0이면 약수
                arrayList.add(i);
            }
        }

        return arrayList;
    }
    //최대공약수
    public int getGCD(int num1, int num2){
        ArrayList arrayList = this.getDivisor(num1); // num1의 약수
        ArrayList arrayList1 = this.getDivisor(num2); // num2의 약수

        arrayList.retainAll(arrayList1); //서로의 교집합

        return (Integer)arrayList.get(arrayList.size()-1);//List는 순서를 보장함으로 마지막에 있는 수가 최대공약수
    }

    //최소공배수
    public int getLCM(int num1, int num2){

        if(num1 <=0 || num2 <=0){ // 양의 정수가 아닐때 
            return 0;
        }

        return (num1 * num2) / getGCD(num1,num2);
    }

    public static void main(String[] args) {
        int number1 = 10;
        int number2 = 6;

        Practice p = new Practice();
        ArrayList l1 = p.getDivisor(number1);   // 10: 1, 2, 5, 10
        ArrayList l2 = p.getDivisor(number2);   // 6: 1, 2, 3, 6
        System.out.println("l1 = " + l1);
        System.out.println("l2 = " + l2);

        System.out.println("최대 공약수: " + p.getGCD(number1, number2));
        System.out.println("최대 공배수: " + p.getLCM(number1, number2));

    }


}

'zerebase > 기초수학' 카테고리의 다른 글

하노이탑  (0) 2022.04.09
지수와 로그  (0) 2022.04.02
조합  (0) 2022.04.02
순열  (0) 2022.03.29