문제링크 : https://www.acmicpc.net/problem/1010
이문제는 조합 공식을 사용하면 바로 풀수있다
이런 문제들은 식만 뽑아낸다면 참 쉬운데 문제는 점화식을 못뽑아내면 손도 못대겠다는것..
쨌든 이 문제는 처음에 math라이브러리를 써서 풀었었는데
그랬더니 메모리를 좀 잡아먹는것같아서 팩토리얼을 따로 정의해서 풀었다
import sys
input = sys.stdin.readline
#팩토리얼
def factorial(num):
result = 1
for i in range(num, 0, -1):
result *= i
return result
#테스트 케이스
t = int(input())
#입력과 동시에 조합공식 사용
for i in range(t):
n,m = map(int, input().split())
#분모
denominator = factorial(m-n) * factorial(n)
#분자
numerator = factorial(m)
#출력
print(numerator//denominator)
아래는 팩토리얼을 직접 정의했을때와 math라이브러리의 메모리,시간 차이
'알고리즘' 카테고리의 다른 글
python 백준1463 1로 만들기(BOJ1463) (0) | 2023.01.08 |
---|---|
python 백준9655 돌게임(BOJ9655) (0) | 2023.01.08 |
python 백준2748 피보나치 수 2(BOJ2748) (0) | 2023.01.03 |
python 백준2775 부녀회장이 될테야(BOJ2775) (0) | 2023.01.02 |
python 백준11000 강의실 배정(BOJ11000) (0) | 2022.12.31 |