728x90
반응형
https://www.acmicpc.net/problem/1010
1010번: 다리 놓기
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.
www.acmicpc.net
풀이
이 문제는 M개의 사이트에서 N개를 뽑아 N의 사이트와 연결시키는 문제이다.
하나의 사이트에 하나의 사이트만 연결할 수 있고 서로 겹치면 안되므로 조합을 이용하여 쉽게 해결할 수 있다.
참고로 조합은 M!/(N!*(M-N)!)이다.
아래의 코드에서 N,M의 범위가 30이하이므로 30까지의 팩토리얼 값을 factorial배열에 담았다.
그리고 주어진 조건에 맞게 조합을 이용하여 연결할 수 있는 가지수를 구했다.
1
2
3
4
5
6
7
8
|
factorial=[1]*31
for i in range(1,31):
factorial[i]=factorial[i-1]*i
for _ in range(int(input())):
n,m=map(int,input().split())
ans=factorial[m]//(factorial[n]*factorial[m-n])
print(ans)
|
cs |
728x90
반응형
'Python3 > 백준 알고리즘' 카테고리의 다른 글
2022.02.28 [백준] (python 파이썬) 암호 만들기 (0) | 2022.02.28 |
---|---|
2022.02.28 [백준] (python 파이썬) 이항 계수 2 (0) | 2022.02.28 |
2022.02.28 [백준] (python 파이썬) 안정적인 문자열 (0) | 2022.02.28 |
2022.02.28 [백준] (python 파이썬) 막대기 (0) | 2022.02.28 |
2022.02.26 [백준] (python 파이썬) 집합 (0) | 2022.02.26 |
댓글