Minimum Falling Path Sum

ㅋㅋ·2022년 12월 13일
0

알고리즘-leetcode

목록 보기
68/135

정수형 2차원 벡터를 받고 해당 벡터의 첫 행에서 시작하여 마지막 행으로 한 행씩 이동한다.

또한 다음 행으로 넘어갈 때 같은 열뿐만이 아닌 인접한 앞 뒤 열로 이동이 가능하다.

이 때 지나온 정수 값들 합하면서 이동하고 마지막 행에 도착할 때 최소 값을 구하는 문제

class Solution {
public:
    int minFallingPathSum(vector<vector<int>>& matrix) {
        
        int n = matrix.size();
        int memo[100][100]{[0 ... 99][0 ... 99] = numeric_limits<int>::max()};

        for (int i = 0; i < n; i++)
        {
            memo[0][i] = matrix[0][i];
        }

        for (int y = 1; y < n; y++)
        {
            int previousY{y - 1};

            for (int x = 0; x < n; x++)
            {
                if (1 <= x)
                {
                    memo[y][x] = min(memo[y][x], matrix[y][x] + memo[previousY][x - 1]);
                }
                
                if (x + 1 < n)
                {
                    memo[y][x] = min(memo[y][x], matrix[y][x] + memo[previousY][x + 1]);
                }

                memo[y][x] = min(memo[y][x], matrix[y][x] + memo[previousY][x]);
            }
        }

        int result{numeric_limits<int>::max()};

        for (int i = 0; i < n ; i++)
        {
            result = min(result, memo[n - 1][i]);
        }

        return result;
    }
};

0개의 댓글