MinimumPathSum

Published at 2021-11-02

class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        sum = 0
        for i in range(1, len(grid)):
            grid[i][0] = grid[i - 1][0] + grid[i][0]
        for j in range(1, len(grid[0])):
            grid[0][j] = grid[0][j - 1] + grid[0][j]

        for i in range(1, len(grid)):
            for j in range(1, len(grid[0])):
                grid[i][j] = min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j]

        return grid[-1][-1]

    # 맨 위, 맨 왼은 걍 누적합계 구함
    # 나머지는 위랑 왼 중 작은거 선택
    # 맨 아래,오른 선택하면 끝
/**
 * @param {number[][]} grid
 * @return {number}
 */
var minPathSum = function(grid) {
    for (let i in grid){
        for (let j in grid[0]){
            if (i == 0 && j != 0){
                grid[0][j] += grid[0][j-1]
            }else if(i != 0 && j == 0){
                grid[i][0] += grid[i-1][0]
            }else if(i != 0 && j != 0){
                grid[i][j] += Math.min(grid[i-1][j], grid[i][j-1])
            }
        }
    }
    return grid[grid.length-1][grid[0].length-1]

};