반응형
코드
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]의 방문 횟수를 출력하는 방법을 사용했다.
반응형
'알고리즘 > dynamic programming' 카테고리의 다른 글
[백준][Python] 2748번 피보나치 수 2 (0) | 2022.05.20 |
---|---|
[백준][Python] 15486번 퇴사 2 (0) | 2022.05.18 |
[백준][Python] 1912번 연속합 (0) | 2022.05.16 |
[백준][Python] 2407번 조합 (0) | 2022.05.13 |
[백준][Python] 11727번 2×n 타일링 2 (0) | 2022.05.12 |
댓글