[LeetCode] Minimum Path Cost in a Grid

bin1225·2022년 9월 2일
0

Algorithm

목록 보기
3/43


class Solution {
public:
    int minPathCost(vector<vector<int>>& grid, vector<vector<int>>& moveCost) {
        
        vector<int> firstFloor = grid[0];
        vector<int> lastFloor = grid[grid.size()-1];
        
        vector<int> cnt(grid.size()*grid[0].size(),INT_MAX);
        
        for(int i=0; i<firstFloor.size(); i++){
            cnt[firstFloor[i]] = 0;
        }
        for(int i=0; i<grid.size()-1; i++){
            vector<int> floor = grid[i];
            vector<int> nextFloor = grid[i+1];
            
            
            for(int j=0; j<floor.size(); j++){
                int node = floor[j];
                
                for(int k=0; k<moveCost[node].size(); k++){
                    int cost = cnt[node] + moveCost[node][k] + node;
                    int next = nextFloor[k];
                    
                    if(cnt[next] > cost){
                        cnt[next] = cost;
                    }
                }
            }
        }
       
        int answer = INT_MAX;
        for(int i=0; i<lastFloor.size(); i++){
            int tmp = cnt[lastFloor[i]] + lastFloor[i];
            if(answer > tmp){
                answer = tmp;
            }
        }
        return answer;
    }
};

푼지 한참 됐는데, 다익스트라 방식을 생각해보다가 접었었다..
이번학기에 듣는 알고리즘 수업에서 아마 다익스트라를 배울 것 같은데, 배우고 나서는 꼭 다익스트라를 사용해서 꼭 풀어보기 메모...

0개의 댓글