minimimi

[백준] 1010 다리 놓기 본문

프로그래밍 공부/알고리즘

[백준] 1010 다리 놓기

99mini 2021. 9. 28. 10:00
반응형

문제출처] https://www.acmicpc.net/problem/1010


문제요약

중복을 포함하지 않는 증가, 감소 함수 구하기 (조합)

풀이

함수에서 단순 증가 혹은 단순 감소함수는 조합을 통해서 구할 수 있다.

조합에서 !(팩토리얼)이 필요하기에 함수 fact을 정의하였다.

def fact(a,b):
    result = 1
    for _ in range(b):
        result *= a
        a -= 1
    return result

a를 b회까지 팩토리얼을 연산하는 함수이다. 만약 n!을 구하고 싶으면 fact(n,n)을 호출하면 된다.


소스코드는 Python 3으로 작성되었습니다.

import sys

input = sys.stdin.readline

n = int(input())

def fact(a,b):
    result = 1
    for _ in range(b):
        result *= a
        a -= 1
    return result

for _ in range(n):
    n,m = map(int,input().split())
    # mCn 을 계산하면 된다.
    print(fact(m,n)//fact(n,n))
반응형