[BOJ] 11050번 이항 계수 1 / Python

sangjuneeeee·2024년 7월 26일

문제

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

풀이

정석적인 풀이인 위 풀이로 재귀함수를 이용하여 해결하였다.

코드

n, r = map(int, input().split())

def fact(n: int):
    if n > 0:
        return n * fact(n - 1)
    elif n == 0:
        return 1

print(fact(n) // (fact(n-r) * fact(r)))

다른 풀이 코드

n, r = map(int, input().split())

a = 1
b = 1

# -1은 역방향을 의미
for i in range(n, n - r, -1):
    a *= i

# r + 1까지인 이유는 1<= i < r + 1 이기 때문.
for i in range(1, r + 1):
    b *= i

print(a // b)

이항 계수의 성질을 이용하여 풀이를 간단히 하여 풀 수 있다.

profile
지식 쌓아두기 블로그

0개의 댓글