Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
Example:
Input:
[ [1,3,1],
[1,5,1],
[4,2,1] ]
Output: 7
Explanation: Because the path 1→3→1→1→1 minimizes the sum.
문제 풀이:
- dp 사용
- 가장 왼쪽 col이나 가장 위쪽 row는 각각 위쪽, 왼쪽에 위치한 이전 배열 값을 현재 배열값에 더한다.
- 나머지 배열은 위와 왼쪽에 있는 값을 비교하여 작은 값과 배열값을 더한다.
dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + nums[i][j];
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int m = grid.size();
if(m == 0){
return 0;
}
int n = grid[0].size();
int dp[m][n];
memset(dp, 0, sizeof(dp));
dp[0][0] = grid[0][0];
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){
if(i==0 && j==0)
continue;
if(i == 0){
dp[0][j] = dp[0][j-1] + grid[0][j];
continue;
}
if(j ==0){
dp[i][0] = dp[i-1][0] + grid[i][0];
continue;
}
dp[i][j] = grid[i][j] + min(dp[i-1][j], dp[i][j-1]);
}
}
return dp[m-1][n-1];
}
};
'알고리즘 문제풀이 > leetcode' 카테고리의 다른 글
[leetcode 53] Maximum Subarray (0) | 2020.10.27 |
---|---|
[leetcode 62]Unique Paths (0) | 2020.10.27 |
[leetcode 96] Unique Binary Search Trees (0) | 2020.10.26 |
[leetcode 139] Word Break (0) | 2020.10.26 |
[leetcode 70] Climbing Stairs (0) | 2020.10.26 |
댓글