[백준] 11048 : 이동하기

이상훈·2023년 11월 15일
0

알고리즘

목록 보기
49/57
post-thumbnail

이동하기

풀이

 메모이제이션을 위한 DP 테이블을 생성한 뒤, 맨 윗줄에서부터 배열을 훑어가며 DP 테이블에 값을 갱신하면된다. 점화식은 아래와 같다.

dp[i][j] = arr[i][j] + max(dp[i-1][j], dp[i][j-1], dp[i-1][j-1])

import sys
N, M = map(int, input().split())
graph = []
for i in range(N):
    graph.append(list(map(int, sys.stdin.readline().split())))

result = [[0]*M for _ in range(N)]

dx = [0, -1, -1]
dy = [-1, -1, 0]

for x in range(N):
    for y in range(M):
        tem = [0]
        for i in range(3):
            nx = x+dx[i]
            ny = y+dy[i]
            if 0<=nx<N and 0<=ny<M:
                tem.append(graph[nx][ny])
        graph[x][y] += max(tem)
print(graph[x][y])

시간복잡도 : O(NM)

profile
Problem Solving과 기술적 의사결정을 중요시합니다.

0개의 댓글