백준 11051 : 이항 계수 2 (Python)

liliili·2022년 11월 10일

백준

목록 보기
37/214

본문 링크

N,K=map(int,input().split())

L=[0]*1001

product=1
for i in range(1001):
    L[i]=product
    product*=(i+1)

print( (L[N]//(L[K]*L[N-K]))%10007)

📌 문제에 어떻게 접근할 것인가?

단순히 이항계수 nCk_nC_k 값을 구하는 문제이다. 이때 nCk_nC_k 값은 n!/k!(nk)!n!/k!(n-k)! 으로 나타낼 수 있다.

굳이 여러번 팩토리얼 값을 구하지말고 리스트 L 을 만들어 주어서 1000 까지 팩토리얼 값을 미리 만들어 준다.

그리고 n!n! 값과 k!k! , (nk)!(n-k)! 값을 리스트에서 꺼내 계산하면 최대 1000번의 연산으로 모든 값을 구할수 있다.

✅ 코드에서 주의해야할 부분

  • 리스트 L의 배열은 1001로 잡는다.
  • 이항계수를 10007로 나눈 값을 출력한다.

0개의 댓글