기초 수학
[기초수학] 조합 (Combination)
scone
2022. 4. 29. 12:25
[개념]
- n개에서 r개를 택하는 경우의 수
(순서가 중요하지 않다는 점에 유의.) - {1, 2, 3} 와 {2, 1, 3} 은 같은 경우이다.
- 공식의 원리는 다음과 같다.
n개 중에 r개를 순서를 생각해 뽑은 후, r개 중에 r개를 순서를 생각하여 뽑는 경우의 수를 나눠준다.
그럼 순서를 고려해 뽑힌 r개에 대하여 각 순서가 달라질 경우의 수를 나눠주게 되어,
결국 순서를 생각하지 않고 n개 중 r개를 뽑았을 때의 경우의 수가 된다.
$$ \mathbin{ _n C _r} = {n! \over r!(n-r)! } = {n(n-1)(n-2)\ ...\ (n-r+1) \over r!} $$
- 예) \( \mathbin{_8 C _3 } = 8*7*6 / 3*2*1 = 56 \)
8부터 3개 곱하고, 3 팩토리얼로 나누자. <- 이렇게 외우는게 간편
[실습1] 조합의 값을 구하는 프로그램을 만들어보자!
def combina_(numL,numR):
result=1
for i in range(numL,numL-numR,-1):
result *= i
for i in range(1,numR+1):
result //= i
return result
numL = int(input('몇 개 중에서 : '))
numR = int(input('몇 개 선택 : '))
print(combina_(numL,numR))
'''
몇 개 중에서 : 8
몇 개 선택 : 3
56
'''
늘 느끼지만 코딩은 머리로는 쉽다고 느껴져도 직접 손으로 해보지 않으면 버벅거리게 되는 것 같다.
가령 for i in range(numL,numL-numR,-1) : 을 바로 못 적는다던지...
혹시라도 미래에 복습을 하게 될 '나'한테 미리 조언하자면, 눈으로 보고 넘기지 말고 손으로 한번 구현해보자.