반응형

   문제

   https://www.acmicpc.net/problem/11050


이항계수가 먼지 생각이 안난다.

찾아보았다.

조합론에서, 이항 계수(二項係數, 영어binomial coefficient)는 이항식을 이항 정리로 

전개했을 때 각 항의 계수이며, 주어진 크기의 (순서 없는) 조합의 가짓수이다.

nCk라고 생각하면 된다.

nCk=n!/(n-k)!k!이다 물론 n은 k보다 크거나 같다.

https://shoark7.github.io/programming/algorithm/3-ways-to-get-binomial-coefficients

위사이트를 참고하였다.

위 식을보면 팩토리얼의 계산이 3개나 들어가있다.

재귀로 구현한다면 속도면에서 많이 느릴것이다.

동적계획법 활용해 앞서 구했던 값들을 다시 구하지 않도록 구현해야겠다.

n까지의 팩토리얼을 구하고 구한값을 이용하여 이항계수를 구해보겠다.


1
2
3
4
5
6
7
8
9
n,k=map(int,input().split())
 
factorial=[1 for _ in range(n+1)]
 
for i in range(1,n+1):
    factorial[i]=i*factorial[i-1]
 
 
print(factorial[n]//factorial[n-k]//factorial[k])
cs





반응형

'알고리즘(python) > 수학' 카테고리의 다른 글

[Python]수학3 백준 9375  (0) 2020.01.22
[Python]수학3 백준 11051  (0) 2020.01.22
[Python]수학3 백준 3036  (0) 2020.01.21
[Python]수학3 백준 2981  (0) 2020.01.21
[Python]수학3 백준 2609  (0) 2020.01.20
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기