본문 바로가기
알고리즘/dynamic programming

[백준][Python] 1890번 점프

by 임짠짠 2022. 5. 17.
반응형
 

1890번: 점프

첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장

www.acmicpc.net

 

코드

import sys

n = int(input())
n_list = []
for _ in range(n):
    a_list = list(map(int,sys.stdin.readline().split()))
    n_list.append(a_list)
dp = [[0]*n for _ in range(n)]
dp[0][0] = 1
for i in range(n):
    for j in range(n):
        if i == n-1 and j == n-1:
            break
        down = i + n_list[i][j]
        right = j + n_list[i][j]

        if down < n:
            dp[down][j] += dp[i][j]
        if right < n:
            dp[i][right] += dp[i][j]
print(dp[n-1][n-1])

 

설명

재귀함수를 이용해서 풀려고 했는데 잘 안 된다..

dp[i][j]에 방문 횟수를 저장해서 마지막 dp[n-1][n-1]의 방문 횟수를 출력하는 방법을 사용했다.

 

반응형

댓글