도착하는 경우의 수를 check 한다. 각 지점마다 2개의 분기로 나누어 지는걸 고려 dp로 누적시킨다. 이동가능 거리가 0이면 정지하므로 연산하지 않는다.
import sys
input = sys.stdin.readline
N = int(input())
board = [list(map(int, input().split())) for _ in range(N)]
dp = [[0] * N for _ in range(N)]
dp[0][0] = 1
for row in range(N):
for col in range(N):
if not board[row][col]:
continue
jump = board[row][col]
if col + jump < N:
dp[row][col + jump] += dp[row][col]
if row + jump < N:
dp[row + jump][col] += dp[row][col]
print(dp[N - 1][N - 1])
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 1727 커플 만들기 (0) | 2021.10.07 |
---|---|
[백준][Python] 20159 동작 그만. 밑장 빼기냐? (0) | 2021.10.07 |
[백준][Python] 1455 뒤집기2 (0) | 2021.10.06 |
[백준][Python] 18185 라면 사기(small) (2) | 2021.10.06 |
[백준][Python] 18186 라면 사기(Large) (0) | 2021.10.06 |