PS(Problem Solving)/백준_BOJ
[백준] 1890번 - 점프 (파이썬) 문제 및 풀이
초코칩프라푸치노
2021. 3. 9. 13:47
문제) 백준 - 동적 계획법 (Dynamic Programming) - 점프
-> www.acmicpc.net/problem/1890
1890번: 점프
첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장
www.acmicpc.net
오른쪽이나 아래로 점프가 가능한 경우 dp 리스트에 +1 해준다. (0, 0)부터 시작해 (n - 1, n - 1)까지 재귀로 완전 탐색하며 (n - 1, n - 1)일 때 기저 사례를 처리해 1을 반환한다.
소스 코드)
import sys
sys.setrecursionlimit(1000000)
input = sys.stdin.readline
n = int(input())
graph = []
for _ in range(n):
graph.append(list(map(int, input().split())))
dp = [[-1] * n for _ in range(n)]
def dfs(x, y):
#기저 사례
if x == n - 1 and y == n - 1:
return 1
if dp[x][y] == -1:
dp[x][y] = 0
if 0 <= x + graph[x][y] < n:
dp[x][y] += dfs(x + graph[x][y], y)
if 0 <= y + graph[x][y] < n:
dp[x][y] += dfs(x, y + graph[x][y])
return dp[x][y]
print(dfs(0, 0))
반응형