๋ฐฑ์ค€/C++

[๋ฐฑ์ค€/C++] 1149๋ฒˆ RGB๊ฑฐ๋ฆฌ

yulee_to 2022. 7. 16. 21:22

๋ฐฑ์ค€

 

1149๋ฒˆ RGB๊ฑฐ๋ฆฌ


๐Ÿค”๋ฌธ์ œ ์ดํ•ด

๊ฐ™์€ ์ƒ‰์ด ์—ฐ์†์œผ๋กœ ๋‚˜์˜ค์ง€ ์•Š๊ฒŒ ์น ํ–ˆ์„ ๋•Œ ๋น„์šฉ์ด ๊ฐ€์žฅ ์ ๊ฒŒ ๋“œ๋Š” ๊ฒฝ์šฐ์˜ ๋น„์šฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.


๐Ÿ”ฅํ’€์ด๐Ÿ”ฅ

์ „์— ํ’€์–ด๋ณธ๊ฒŒ ๊ธฐ์–ต์ด ๋‚˜์„œ ๋ฐ”๋กœ DP๋ฅผ ์ด์šฉํ•ด ํ’€์—ˆ๋‹ค.

dp[i][j]์—์„œ i๋Š” ์ง‘์˜ ๋ฒˆํ˜ธ, j๋Š” ์ƒ‰์„ ์˜๋ฏธํ•œ๋‹ค.

dp[i][0]์€ 0์„ ์น ํ–ˆ์„ ๋•Œ ๊ทธ ์ „ ์ง‘์—์„œ ์น ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” 1๊ณผ 2์ด๋ฏ€๋กœ dp[i-1][1]๊ณผ dp[i-1][2]๋ฅผ ๋น„๊ตํ•ด ๋” ์ž‘์€ ๊ฐ’๊ณผ i๋ฒˆ์งธ ์ง‘์„ 0์œผ๋กœ ์น ํ–ˆ์„ ๋•Œ์˜ ๋น„์šฉ๊ณผ ํ•ฉํ•ด dp[i][0]์„ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค.

์ƒ‰๊น” 1๊ณผ 2๋„ ๋™์ผํ•˜๊ฒŒ ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด ๋งˆ์ง€๋ง‰ ์ง‘์—์„œ ์ƒ‰์„ 0์„ ์น ํ–ˆ์„ ๋•Œ vs 1์„ ์น ํ–ˆ์„ ๋•Œ vs 2๋ฅผ ์น ํ–ˆ์„ ๋•Œ๋ฅผ ๋น„๊ตํ•ด ๊ทธ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ค€๋‹ค.


#include <iostream>
#include <vector>

using namespace std;

int n;
vector<vector<int>> dp;

int main() {
    cin.tie(nullptr);
    cout.tie(nullptr);
    ios::sync_with_stdio(false);
    cin >> n;
    dp.resize(n + 2);
    int x;
    for (int i = 1; i <= n; i++) {
        for (int j = 0; j < 3; j++) {
            cin >> x;
            dp[i].push_back(x);
        }
    }

    for (int i = 2; i <= n; i++) {
        dp[i][0] = min(dp[i - 1][1], dp[i - 1][2]) + dp[i][0];
        dp[i][1] = min(dp[i - 1][0], dp[i - 1][2]) + dp[i][1];
        dp[i][2] = min(dp[i - 1][0], dp[i - 1][1]) + dp[i][2];
    }
    int min_cost = dp[n][0];
    for (int i = 1; i < 3; i++) {
        if (min_cost > dp[n][i]) min_cost = dp[n][i];
    }
    cout << min_cost;
}
728x90