1010 다리놓기 _python

    https://www.acmicpc.net/problem/1010

     

    1010번: 다리 놓기

    입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.

    www.acmicpc.net

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    문제 접근

    dp문제.

    문제를 읽어보면 M개중 N개를 뽑아라 라는 말로 간추릴수 있다.

    조합 공식에 대입만 해주면 되는데, 팩토리얼을 사용하고 범위는 30까지니 dp로 미리 값을 저장해두면 된다.

     

    조합 공식이 기억안난다면

    https://coding-factory.tistory.com/606

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    코드

    from collections import deque
    import sys
    input = sys.stdin.readline
    
    """
    1010
    M개중 N개를 골라라 - 조합. mCn = m!/((m-n)!*n!)
    """
    
    #입력
    T = int(input())
    dp = [i for i in range(31)]
    dp[0]=1
    
    #팩토리얼
    def factorial():
        for i in range(3,31):
            dp[i] *= dp[i-1]
    factorial()
    
    #연산후 출력
    for i in range(T):
        N,M = map(int,input().split())
        print(dp[M]//(dp[M-N]*dp[N]))

    '백준 > 문제풀이_python' 카테고리의 다른 글

    1748 피보나치 수 2 _python  (0) 2022.11.08
    25905 장인은 도구를 탓하지 않는다 _python  (0) 2022.11.03
    25908 수열의 합 _python  (0) 2022.11.02
    1011 Fly me to the Alpha Centauri _python  (0) 2022.11.02
    5430 AC _python  (0) 2022.11.01

    댓글