크게 생각하고, 목표를 높게 잡고, 대담하게 행동하라.

“언젠가는 목표에 이를지도 모르는 단계를 밟는 것으로는 언제나 실패한다. 모든 단계가 그 자체로 목표인 동시에 목표로 이르는 단계여야한다.” - 괴테

알고리즘/DP

[Python] 백준 1890 - 점프

o_onn5 2023. 1. 28. 08:29
728x90

https://www.acmicpc.net/problem/1890

 

1890번: 점프

첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장

www.acmicpc.net

 

처음에는 접근을 BFS와 DP를 섞어서 하면 될 것 같은데? 했지만 메모리초과가 나왔다.

BFS로 풀려고하면 생각보다 조건들이 까다로워져서 다른 방법을 생각해봤다.

 

그래서 생각해낸것이 이중 for문으로  전부 확인하면서 DP 돌리는거였다(진작에 이렇게 할걸..ㅋㅋㅋ)

DP에는 해당 위치로 올 수 있는 경로의 개수를 저장한다.

 

그리고 이중 for문을 돌릴 시 맨 마지막 (n-1, n-1) 번째는 continue로 패스해야한다.

jump값이 0이라서 출력할때 제자리 점프를 두 번 하고 값이 X4가 되어버리기 때문.

 

n=int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
dp = [[0 for _ in range(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:
            continue
        jump = arr[i][j]
        if 0<=i+jump<n:
            dp[i+jump][j] += dp[i][j]
        if 0<=j+jump<n:
            dp[i][j+jump] += dp[i][j]

print(dp[n-1][n-1])
728x90

'알고리즘 > DP' 카테고리의 다른 글

[Python] 백준 1520 - 내리막 길  (0) 2023.01.30
[Python] 백준 9456 - 스티커  (0) 2023.01.29
[Python] 백준 12852 - 1로 만들기 2  (0) 2023.01.21
[Python] 백준 2294 - 동전 2  (0) 2023.01.19
[Python] 백준 2293 - 동전 1  (0) 2023.01.18