https://www.acmicpc.net/problem/1010
1010번: 다리 놓기
입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.
www.acmicpc.net
문제에서 뭐가 필요한지
(경우가 필요한지/경우의 수가 필요한지) 잘 생각하고 풀자
무작정 쓰기 편한 함수만 쓰지 말고ㅠㅠ
처음 문제를 보고
mCn 으로 풀면 안되나? 틀은 이렇게 나올듯
from itertools import permutations
t = int(input())
for _ in range(t) :
n, m = map(int, input().split())
m_list = list(range(1, m))
print(len(list(permutations(m_list, n)))) # mPn 경우의 수

...^^ 나 .. 메모리초과 아티스트일지도 ?
다시 생각해봤을때
itertools가 편리한 도구이긴 하지만,
모든 경우가 구체적으로 어떤 경우인지 알 필요가 없고, 경우의 '수'만 알면 된다.
그러면 nCr = (n)! / (r)!(n-r)! 이니까 그냥 그대로 수학적으로 계산하면 된다.
import math
t = int(input())
for _ in range(t):
n, m = map(int, input().split())
print(math.factorial(m) // (math.factorial(n) * math.factorial(m - n))) # mCn 경우의 수
일케

하하
문제에서 뭐가 필요한지
(경우가 필요한지/경우의 수가 필요한지) 잘 생각하고 풀자
무작정 쓰기 편한 함수만 쓰지 말고ㅠㅠ
'알고리즘 풀이' 카테고리의 다른 글
| [백준 #13549] 숨바꼭질3 (파이썬) (0) | 2022.11.25 |
|---|---|
| [#2667 : 파이썬] 단지번호붙이기 - BFS (0) | 2022.11.23 |
| [#1316] 그룹단어 체커 (0) | 2022.11.21 |
| [#2217] 로프 (0) | 2022.11.18 |
| [#20436] ZOAC3 (0) | 2022.11.17 |