๐๏ธ Algorithm/๐ฉ ๋ฐฑ์ค
๐ฉ [๋ฐฑ์ค] [Python] [Gold3] 1520๋ฒ_๋ด๋ฆฌ๋ง ๊ธธ
Dbswnstjd
2023. 4. 19. 15:36
๋ฌธ์
https://www.acmicpc.net/problem/1520
1520๋ฒ: ๋ด๋ฆฌ๋ง ๊ธธ
์ฌํ์ ๋ ๋ ์ธ์ค์ด๋ ์ง๋๋ฅผ ํ๋ ๊ตฌํ์๋ค. ์ด ์ง๋๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ง์ฌ๊ฐํ ๋ชจ์์ด๋ฉฐ ์ฌ๋ฌ ์นธ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ํ ์นธ์ ํ ์ง์ ์ ๋ํ๋ด๋๋ฐ ๊ฐ ์นธ์๋ ๊ทธ ์ง์ ์ ๋์ด๊ฐ ์ฐ์ฌ ์์ผ
www.acmicpc.net
ํ์ด
# ๋ฐฑ์ค 1520๋ฒ ๋ฌธ์ - ๋ด๋ฆฌ๋ง ๊ธธ
from collections import deque
dx, dy = [0,0,-1,1], [1,-1,0,0]
m, n = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(m)]
dp = [[-1]*n for _ in range(m)]
cnt = 0
def dfs(x, y):
if x == m-1 and y == n-1:
return 1
if dp[x][y] == -1:
dp[x][y] = 0
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < m and 0 <= ny < n:
if graph[x][y] > graph[nx][ny]:
dp[x][y] += dfs(nx,ny)
return dp[x][y]
print(dfs(0,0))
๋งจ ์ฒ์ ๋จ์ํ DFS ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด๋ ๊ฒ ๋๋ฉด 500*500 ์ ์ฌ๊ท์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
๋ฐ๋ผ์ ๋ฐฉ๋ฌธํ๋ ๊ณณ์ ๋ค์ ์ฒ๋ฆฌํ์ง ์์์ผ ํ๋๋ฐ ๊ทธ๊ฒ์ dpํ ์ด๋ธ์ ๋ง๋ค์ด ํด๊ฒฐํ์๋ค.