dfs만을 이용하면
시간초과가 나는 문제
다이나믹 프로그래밍을 이용해야 한다.
이중 for문으로 탐색을 진행한다.
오른쪽, 아래로만 이동가능하며
dp[n-1][n-1]에
경로의 수가 저장되어 있다.
N=int(input())
array=[list(map(int,input().split())) for _ in range(N)]
# 오른쪽이나 아래로만 이동 가능
# 0이 종착점
answer=0
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: # 끝에 도달했을 때
print(dp[i][j])
break
cnt = array[i][j]
# 오른쪽으로 가기
if j + cnt < N:
dp[i][j + cnt] += dp[i][j]
# 아래로 가기
if i + cnt < N:
dp[i + cnt][j] += dp[i][j]
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[20127] Y - 수열 in python (0) | 2022.01.30 |
---|---|
[1722] 순열의 순서 in python (0) | 2022.01.29 |
[9507] Generations of Tribbles in python (0) | 2022.01.26 |
[3079] 입국 심사 in python (0) | 2022.01.23 |
[14494] 다이나믹이 뭐예요 in python (0) | 2022.01.23 |