출처 : https://www.acmicpc.net/problem/1010
t = int(input())
for i in range(t) :
n, m = map(int, input().split())
n1 = 1
m1 = 1
for i in range(1, n+1) :
n1 = n1 * i
for j in range(m-n+1, m+1) :
m1 = m1 * j
print(int(m1/n1))
복잡하게 생각할 필요 없이 오른쪽 m개의 사이트 중 n개의 다리를 선택하면 된다.
어떻게 선택되든 왼쪽과 오른쪽의 사이트는 제일 위에서부터 순서대로 다리가 놓인다.
파이썬에서는 조합을 구하는 함수가 따로 없기 때문에
분자에는 (m - n + 1) 부터 m까지 곱한 값을,
분모에는 1부터 n까지 곱한 값을 구해서 계산해준다.
'알고리즘 문제 풀이' 카테고리의 다른 글
프로그래머스 행렬의 덧셈 (Python) (0) | 2022.10.19 |
---|---|
프로그래머스 멀리 뛰기 (Python) (0) | 2022.10.19 |
백준 1978번 : 소수 찾기 (Python) (0) | 2022.10.17 |
백준 10250번 : ACM호텔 (Python) (0) | 2022.10.14 |
백준 2869번 : 달팽이는 올라가고 싶다 (Python) (1) | 2022.10.11 |
댓글