728x90
반응형
import sys
n = int(input())
graph = [list(map(int, input().split())) for i in range(n)]
d = [ [0]*n for _ in range(n) ]
d[0][0] = 1
for i in range(n):
for j in range(n):
if i == j == n-1 : break
a = graph[i][j]
if i+ a < n :
d[i+a][j] += d[i][j]
if j+a < n :
d[i][j+a] += d[i][j]
print(d[n-1][n-1])
d[n-1][n-1] = 0 은 항상 만족하는 조건이다.
만약 이중 for 문에서 n-1, n-1 인 경우를 빼지 않으면 a = 0이고 i+a<n 과 j+a<n 이 모두 True 가 되어
더하지 않아도 되는 계산을 하게 된다.
따라서 맨 마지막 경우를 빼는 조건을 반드시 넣어 주도록 한다.
728x90
반응형
'백준 > 다이나믹 프로그래밍' 카테고리의 다른 글
# 10942 팰린드롬? 파이썬 (0) | 2021.04.09 |
---|---|
# 10211 Maximum Subarray 파이썬 (0) | 2021.04.09 |
# 9465 스티커 파이썬 (0) | 2021.03.11 |
# 11722 가장 긴 감소하는 부분 수열 (0) | 2020.09.17 |
# 1965 상자넣기 (0) | 2020.09.17 |