[Python] 백준 알고리즘 2407번 - 조합

2022. 3. 2. 22:16알고리즘/문제풀이

[Python] 백준 알고리즘 2407번  -  조합 

 

문제 출처 : https://www.acmicpc.net/problem/2407

 

2407번: 조합

n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n)

www.acmicpc.net

 

 접근 방식

 

순열과 조합의 기본을 다루는 문제이다. 순열과 조합 둘 다 개념을 생각해 보면 팩토리얼로 구성된 식으로 표현이 가능하다. 따라서 팩토리얼을 계산하는 메서드를 정의해 주고 그 팩토리얼 메서드를 기반으로 코드를 구성하였다.

 

문제에서 요구하는 조합의 경우 조합의 정의는 다음과 같다.

조합의 식

메소드를 구현한 후 조합의 정의에 맞춰서 출력을 했다.

 

 코드

# 주어진 문제를 풀기위한 팩토리얼 식 입력
def factorial(a):
    if a <= 1:
        return 1
    else:
        return a * factorial(a - 1)

# 문제에서 주어지는 입력 값. n 과 m
n, m = map(int, input().split())

# int형 변환을 안하고 출력을 하는 경우 뒤에 소숫점이 붙었다. int형 변환 선언 후 출력
print(int(factorial(n) // (factorial(n - m) * factorial(m))))