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

자연수 N과 정수 K가 주어졌을 때 이항계수를 구하는 문제.
이항계수란?
"이항계수란 주어진 집합에서 원하는 개수만큼 순서없이 뽑는 조합의 개수"
즉 (5,2) 란 (a,b,c,d,e) 5개의 원소에서 2개를 순서없이 뽑는 조합의 개수이다.
(a,b),(a,c),(a,d),(a,e),(b,c),
(b,d),(b,e),(c,d),(c,e),(d,e)
이렇게 총 10개인 것을 확인 할 수 있다.
언젠가 이거 공식이 있었던 것 같은 기억에 찾아보았다.

맞아. 이렇게 표현했었고, 저런 공식이 있었었지.
이전 블로깅이 팩토리얼이었는데 여기서 쓸려고 선제한거였구나
백준 10872번: 팩토리얼 python
N!을 구하는 코드는
import sys
N = int(sys.stdin.readline())
result = 1
while N > 0:
result *= N
N -= 1
print(result)
이렇게 정의했었기에 이를 이용하여 문제를 풀어보았다.
import sys
def factorial(n):
result = 1
while n > 0:
result *= n
n -= 1
return result
def nCk(n,k):
return factorial(n) // (factorial(n - k) * factorial(k))
def main():
n, k = map(int, sys.stdin.readline().split())
print(nCk(n, k))
main()
팩토리얼을 구하는 함수, 이항계수를 구하는 함수를 따로 정의하여 main 함수에서 합쳐주었다.
사실 factorial 구하는 함수만 정의한 뒤
print(factorial(n) // (factorial(n - k) * factorial(k)) 이런식으로 print 해주면 코드가 더 짧아질 수 있을 것 같다.