본문 바로가기
알고리즘 문제 풀이

백준 1010번 : 다리 놓기 (Python)

by 로널드 피셔 2022. 10. 19.

출처 : 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까지 곱한 값을 구해서 계산해준다.

댓글