728x90
반응형
문제 출처:https://www.acmicpc.net/problem/11050
풀이:
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에 저장해서 원하는 값을 출력한다.
반응형
댓글