Knowledge/기초수학

[기초수학] 경우의 수

똑똑한망치 2023. 11. 14. 23:47
728x90
반응형

1. 경우의 수


  • 어떤 사건에서 일어날 수 있는 경우의 가짓수
  • 사건 A가 일어날 경우의 수 : n(A)

 

 

 


 

 

2. 합의 법칙


  • 사건 A 또는 사건 B가 일어날 경우의 수
  • 사건 A와 사건 B의 합의 법칙 : n(A  B)
  • n(A  B) = n(A) + n(B) - n(A  B)
//두 개의 주사위를 던졌을 때 합이 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) {
        if ((item1 + item2) % 3 == 0) {
            nA +=1;
        }
        if ((item1 + item2) % 4 == 0) {
            nB += 1;
        }
        if ((item1 + item2) % 12 == 0) {
            nAandB +=1;
        }
    }
}
System.out.println("결과: " + ((nA + nB) - nAandB));   //20 출력

 

 

 

 


 

 

 

 

 

 

3. 곱의 법칙


  • 사건 A와 사건 B가 동시에 일어날 경우의 수
  • n(A ∩ B) = n(A) x n(B)
//두개의 주사위 a, b를 던졌을 때 a는 3의 배수, b는 4의 배수인 경우

nA = 0;
nB = 0;
    for (int item1: dice1) {
        if(item1 % 3 == 0) {
            nA++;
        }
    }
    
    for (int item2: dice2) {
        if (item2 % 4 ==0) {
            nB++;
        }
    }
System.out.println("결과: " + nA * nB);

 

 

 

 


 

 

 

4. 응용하기


(1) 약수 구하기

// 약수 구하기
public ArrayList getDivisor(int num) {
	ArrayList result = new Arraylist():
    
    for (int i = 1; i < (int) num / 2; i++) {
    	if (num % i == 0) {
        	result.add(i);
        }
    }
    return result;
}

 

 

 

 


 

 

 

(2) 최대 공약수 구하기

//최대 공약수 구하기

public int getGCD(int numA, int numB) {
	int gcd = -1;
    
    ArrayList<Integer> divisorA = this.getDivisor(numA);   // 약수 구하는 메소드 활용
    ArrayList<Integer> divisorB = this.getDivisor(numB);   
    
    for (int itemA : divisorA) {
    	for (int itemB : divisorB) {
        	if (itemA == itemB) {
            	if (itemA > gcd) {
                	gcd = itemA;
			}
		}
	}
}
    return gcd;
}

 

 

 

 

 


 

 

 

 

 

(3) 최소 공배수 구하기

  • 최소공배수 = numA X numB / 최대공약수
//최소공배수 구하기

public int getLCM(int numA, int numB) {
	int lcm = -1;
    
    int gcd = this.getGCD(numA, numB);  //최대공약수 구하는 메소드 활용
    
    if (lcm != -1) {
    	lcm = numA * numB / gcd;
	}
    return lcm;
}
반응형

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

[기초수학] 지수와 로그  (2) 2023.11.18
[기초수학] 점화식과 재귀함수  (1) 2023.11.18
[기초수학] 조합 (Combination)  (0) 2023.11.18
[기초수학] 순열(Permutation)  (1) 2023.11.18
[기초수학] 집합  (0) 2023.11.14