본문 바로가기
백준알고리즘/정수론 및 조합론

(Pyhon/🥉1)백준 알고리즘 11050번: 이항 계수1

by windy7271 2022. 5. 31.
728x90
반응형

문제 출처:https://www.acmicpc.net/problem/11050

 

11050번: 이항 계수 1

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net

풀이:

N,M = map(int,input().split())
list_n = list()
list_m = list()


for i in range(N,0,-1):
    list_n.append(i)
for i in range(M,0,-1):
    list_m.append(i)

x = 1
y = 1
for i in range(0,M):
    y *= list_n[i]
    x *= list_m[i]
print(y // x)

 

이항 정리에 대해 알아보았는데 쉽게 생각하면 조합의 갯수를 구하는것과 같다

 

예를 들어 N = 5  M = 2 이면 5와2의 조합의 갯수 즉 5C2를 구하면 되는데

 

학창시절에 배웠던걸 생각하면 분자에는 5! 인데 2개만 즉 5*4  분모는 2!

 

즉 분자는 5 * 4 가 남고 분모에는 2 * 1 이 남아 정답은 10이다.

 

코드를 보면 위에 for 문을 통해 입력 받은 부터 1까지 -1씩 줄여가면서 입력받은 수의 팩토리얼을 리스트로 저장해준다.

 

조합을 직접 써보면 분자와 분모의 갯수는 똑같다 즉 nCm 일때 범위는 m 이라는 소리이다.

 

고로 이걸 x, y에 저장해서 원하는 값을 출력한다.

 

 

반응형

댓글