LeetCode/DP심화

931. Minimum Falling Path Sum

hyunkookim 2025. 1. 3. 17:51

931. Minimum Falling Path Sum

 

class Solution:
    def minFallingPathSum(self, matrix: List[List[int]]) -> int:
        # nxn 배열
        # 3방향으로 떨어질수 있음. => 3방향으로 올라갈수 있다는 의미
        # 계산 다해서, 제일 윗 열중, 최소값 찾으면 됨
        N = len(matrix)

        # 이것도 역순으로.. 아래에서->위로, 
        # 그런데, 제일 아래줄은 계산에는 반영해도
        # 루프에는 빼기        
        for r in range(N-2, -1, -1):
            for c in range(N):
                if c == 0:
                    matrix[r][c] += min(matrix[r+1][c], matrix[r+1][c+1])
                elif c == N-1:
                    matrix[r][c] += min(matrix[r+1][c-1], matrix[r+1][c])
                else:
                    matrix[r][c] += min(matrix[r+1][c-1], matrix[r+1][c], matrix[r+1][c+1])

        return min(matrix[0][:])

 

1차: 2025.01.03 그냥 품

'LeetCode > DP심화' 카테고리의 다른 글

712. Minimum ASCII Delete Sum for Two Strings ★★  (0) 2025.01.04
516. Longest Palindromic Subsequence ★★  (0) 2025.01.04
740. Delete and Earn  (1) 2025.01.02
509. Fibonacci Number  (0) 2025.01.02
221. Maximal Square ★  (0) 2024.12.31