정수형 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;
}
};