목차
https://www.acmicpc.net/problem/1010
from itertools import combinations
n,m=map(int,input().split())
arr=list(range(1,n+1))
arr2=list(combinations(arr,m))
print(len(arr2))
위와 같은 코드로 조합의 경우의 수를 셀수도 있지만 해당 문제는 0.5초라는 시간 제한이 이기 때문에 다른 접근 법이 필요하다.
def factorial(n):
num = 1
for i in range(1, n+1):
num *= i
return num
T = int(input())
for _ in range(T):
n, m = map(int, input().split())
bridge = factorial(m) // (factorial(n) * factorial(m - n))
print(bridge)
m이 n보다 크기 때문에 최대 연결할 수 있는 다리의 개수는 n개이고 m개의 지역에 n개의 다리를 놓을 수 있는 경우의 수를 구하는 것이기 때문에 mCn 으로 표현할 수 있고 이는 m! 을 (m-n)!n! 으로 나눈 값이다.
'코딩테스트[파이썬] > 백준 (BOJ)' 카테고리의 다른 글
백준 2092 - 딕셔너리 정렬 (0) | 2024.02.18 |
---|---|
백준 2346 - 풍선터트리기 [큐] (0) | 2024.02.16 |
백준 12789 - 도키도키 간식드리미 (0) | 2024.02.16 |
백준 17103 - 짝[소수약수배수] (0) | 2024.02.16 |
백준 1934 - 최소공배수[유클리드 호제법] (2) | 2024.02.16 |