알고리즘
[백준 알고리즘] 1010번 다리 놓기. 파이썬(python)
삶은겨란
2022. 6. 13. 21:38
m개 중 n개를 순서 상관없이 고른다. → 조합문제
from itertools import combinations
T=int(input())
for _ in range(T):
n,m=map(int, input().split())
arr=[0]*m
print(len(list(combinations(arr,n))))
# 배열을 만든 이유
# combinations는 배열 중에 n개를 뽑는다는 의미->(arr,n)
# n개를 뭘 뽑았는지 리스트 형식으로 저장하고 개수를 세기 위해 길이를 출력
정답은 맞지만 n, m이 커질수록 시간이 너무 오래 걸려 시간초과가 일어난다.
그래서 팩토리얼 함수를 만들어 조합 공식에 대입한다.
T=int(input())
def factorial(n):
if n<=1:
return 1
else:
return n*factorial(n-1)
for _ in range(T):
n,m=map(int, input().split())
result=factorial(m)//(factorial(m-n)*factorial(n))
print(result)