한 걸음씩 기록하며

[백준] 11050번 이항 계수 1 본문

알고리즘 & 코딩테스트

[백준] 11050번 이항 계수 1

Haksae 2022. 3. 18. 04:32

⛏ 문제 파악

  • 이항계수(Binomial Coefficient)
    • 이항계수는 조합론에서 등장하는 개념으로 주어진 크기 집합에서 원하는 개수만큼 순서없이 뽑는 조합의 가짓수를 일컫는다.
    • 2를 상징하는 ‘이항’이라는 말이 붙은 이유는 하나의 아이템에 대해서는 ‘뽑거나, 안 뽑거나’ 두 가지의 선택만이 있기 때문이다.

  • 이항계수를 찾아보니.. 이항계수의 성질을 이용하여 동적 계획법?을 만드는 알고리즘도 있던데 너무 어려워서 그건 포기했다..
  • 그냥 여기에서는 조합론의 기본인 팩토리얼로 이항계수 구하는 법 정도만 하겠다..

 👉🏻  답안

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

def factorial(n): # 팩토리얼 구하는 함수
    ans = 1
    for i in range(2, n+1):
        ans *= i
    return ans


def bino_coef_factorial(n, r): # 이항계수 구하는 함수
    return print(factorial(n) // factorial(r) // factorial(n-r))

bino_coef_factorial(N, K)

📑  간단한 설명

  • n!을 구하는 함수를 직접 만들고
  • n! // r! // n-r!을 통해서 위의 이항계수 공식을 만들었다.
  • 물론 이렇게 하지 않고... 역시 우리의 파이썬이 math에서 팩토리얼을 지원한다.
from math import factorial
n, k = map(int, input().split())
b = factorial(n) // (factorial(k) * factorial(n - k))
print(b)
Comments