import sys
input = sys.stdin.readline
N = int(input())
arr = [list(map(int, input().split())) for i in range(N)]
dp = [[-1 for j in range(N)] for i in range(N)]
def dfs(y, x):
if y == N-1 and x == N-1 : return 1
if dp[y][x] == -1:
dp[y][x] = 0
jump = arr[y][x]
if y + jump < N: dp[y][x] += dfs(jump + y, x)
if x + jump < N: dp[y][x] += dfs(y, jump + x)
return dp[y][x]
print(dfs(0,0))
dp를 최대한 활용해서 시간초과가 안나게끔 하는것이 핵심이었던 문제
https://www.acmicpc.net/problem/1890
'컴퓨터 > 코테' 카테고리의 다른 글
카카오 2019 기출 - 실패율 (0) | 2021.10.04 |
---|---|
2022 블라인드 카카오 1차 2차 코딩테스트 후기 (0) | 2021.09.26 |
백준 17836 - 공주 구출 [bfs] (0) | 2021.09.16 |
삼성 기출 9660 번호 붙이기 (0) | 2021.09.13 |
백준 1987 알파벳 - bfs (0) | 2021.09.12 |