diff --git "a/tgyuuAn/DFS/\353\202\264\353\246\254\353\247\211 \352\270\270.py" "b/tgyuuAn/DFS/\353\202\264\353\246\254\353\247\211 \352\270\270.py" new file mode 100644 index 0000000..9277f37 --- /dev/null +++ "b/tgyuuAn/DFS/\353\202\264\353\246\254\353\247\211 \352\270\270.py" @@ -0,0 +1,37 @@ +import sys +sys.setrecursionlimit(10**6) + +def input(): return sys.stdin.readline().rstrip() + +M, N = map(int, input().split()) +board = [ list(map(int, input().split())) for _ in range(M) ] + +dy = [-1, 1, 0, 0] +dx = [0, 0, -1, 1] +dp = [[-1 for _ in range(N)] for _ in range(M)] + +def dfs(now): + if now == (N-1, M-1): + return 1 + + col, row = now + now_value = board[row][col] + + if dp[row][col] != -1: + return dp[row][col] + + temp = 0 + for dir in range(4): + new_col = col + dx[dir] + new_row = row + dy[dir] + + if new_col < 0 or new_col > N-1: continue + if new_row < 0 or new_row > M-1: continue + if board[new_row][new_col] >= now_value: continue + + temp += dfs((new_col,new_row)) + + dp[row][col] = temp + return dp[row][col] + +print(dfs((0,0))) \ No newline at end of file diff --git a/tgyuuAn/README.md b/tgyuuAn/README.md index 2d06b35..714014d 100644 --- a/tgyuuAn/README.md +++ b/tgyuuAn/README.md @@ -89,4 +89,5 @@ | 85차시 | 2025.01.09 | 다익스트라 + 이분 탐색 | 인터넷 설치 | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/264 | 86차시 | 2025.01.16 | 이분 탐색 | 통나무 자르기 | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/265 | 87차시 | 2025.01.31 | 그리디 | 택배 | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/268 +| 88차시 | 2025.02.04 | DFS + DP | 내리막 길 | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/269 ---