코테준비 - Dungeon Game

정상화·2023년 2월 26일

LeetCode

목록 보기
161/222

Dungeon Game

class Solution {
public:
    int calculateMinimumHP(vector<vector<int>> &dungeon) {
        int m = dungeon.size();
        int n = dungeon.front().size();
        vector<vector<int>> minHp(m, vector<int>(n));

        minHp.at(m - 1).at(n - 1) = max(-dungeon.at(m - 1).at(n - 1), 0);

        for (int i = m - 2; i >= 0; i--) {
            int prevHp = minHp.at(i + 1).at(n - 1);
            int delta = dungeon.at(i).at(n - 1);
            minHp.at(i).at(n - 1) = max(prevHp - delta, 0);
        }
        for (int j = n - 2; j >= 0; j--) {
            int prevHp = minHp.at(m - 1).at(j + 1);
            int delta = dungeon.at(m - 1).at(j);
            minHp.at(m - 1).at(j) = max(prevHp - delta, 0);
        }

        for (int i = m - 2; i >= 0; i--) {
            for (int j = n - 2; j >= 0; j--) {
                minHp.at(i).at(j) = max(min(minHp.at(i + 1).at(j), minHp.at(i).at(j + 1)) - dungeon.at(i).at(j), 0);
            }
        }
        return minHp.at(0).at(0)+1;
    }
};
profile
백엔드 희망

0개의 댓글