JadeCode

[백준] python 1010 다리 놓기 본문

개발/알고리즘

[백준] python 1010 다리 놓기

z-zero 2022. 1. 21. 20:00

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

 

1010번: 다리 놓기

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

www.acmicpc.net

풀이법

다이나믹 프로그래밍

1.  30 * 30 배열을 만든다

2. 아래의 그림과 같이 생각한다.

배열 표

코드

import sys
input = sys.stdin.readline

t = int(input())

dp = [[0 for _ in range(30)]for _ in range(30)]
for i in range(1, 30):
    for j in range(1, 30):
        if i == 1:
            dp[i][j] = j
        elif i == j:
            dp[i][j] = 1
        else:
            if j > i:
                dp[i][j] = dp[i-1][j-1]+dp[i][j-1]

for _ in range(0, t):
    n, m = map(int, input().split(' '))
    print(dp[n][m])
Comments