공부 자료/알고리즘

(Python/파이썬) 백준 1890번 - 점프

뚜루뚜루세니 2021. 8. 11. 09:48
728x90

문제출처: https://www.acmicpc.net/problem/1890

 

1890번: 점프

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

www.acmicpc.net

1. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
= int(input())
 
way=[]
for i in range(n):
    way.append(list(map(int,input().split())))
 
#해당 좌표 이동가능한 방법의 갯수
dp = [[0 for _ in range(n)] for _ in range(n)]
#시작 지점 1로 지정
dp[0][0= 1
 
for y in range(n):
    for x in range(n):
        if way[y][x]==0:
            break
        now = way[y][x]
        #오른쪽 이동
        if x+now <n:
            dp[y][x+now] += dp[y][x]
        #아래로 이동
        if y+now <n:
            dp[y+now][x] += dp[y][x]
 
print(dp[y][x])
cs

2. 해결과정

좌표가 (0,0) 부터 (n-1,n-1)까지 순회하면서 현재좌표(x,y)에 오른쪽 or 아래쪽으로 갈 수 있는지 검사를 해주고, 갈 수 있다면 dp[x+now][y+now]에 dp[y][x]를 더해준다. dp는 해당 좌표로 이동가능한 방법의 갯수를 담아준다. 시작지점을 1로 초기화해서 시작해주면 된다.

도착지점이 0일때 break해주면 된다.

728x90