Minimum Path Sum

Updated:

(0,0)에서 시작해서 (n-1,m-1)에 도달하는데 있어서 최소 가중치를 만들어서 도달하는 문제이다. 아마 BFS로 문제를 풀어도 되지만, DP로 한번 접근을 해보았다.

by Java

class Solution {
    public int minPathSum(int[][] grid) {
        int n = grid.length;
        int m = grid[0].length;
        int[][] dp = new int[n][m];
        
        for(int i=0;i<n;i++) {
            for(int j=0;j<m;j++){
                dp[i][j]=-1;
            }
        }
        
        return go(0,0,n,m,grid,dp);
    }
    private int go(int x,int y,int n,int m,int[][] board,int[][] dp) {
        if(x>=n || y>=m) return (int)1e9;
        if(x==n-1 && y==m-1) return board[x][y];
        if(dp[x][y]!=-1) return dp[x][y];
        dp[x][y]=(int)1e9;
        dp[x][y] = board[x][y]+Math.min(go(x+1,y,n,m,board,dp),go(x,y+1,n,m,board,dp)); // 핵심
        return dp[x][y];
    }
}

Leave a comment