๐Ÿ”’Algorithm

๋ฐฑ์ค€[node.js] > 1149 RGB๊ฑฐ๋ฆฌ

devWarrior 2024. 11. 11. 01:22

๋ฌธ์ œ๋งํฌ

https://www.acmicpc.net/problem/1149

 

ํ’€์ด

์ฒ˜์Œ์—๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ๋”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์—ฌ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋ ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์•„๋ž˜์™€ ๊ฐ™์€ ์ผ€์ด์Šค๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๊ทธ๋ ‡๊ฒŒ ์ ‘๊ทผํ•˜๋ฉด ์•ˆ๋  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. 

3

1 2 3

4 5 6

100 100 1

200 200 1

 

๊ฒฐ๊ตญ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„  ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

let dp = Array.from({ length: input.length - 1 }, () => {
    return Array(3).fill(0);
});

let map = [];
for (let i = 1; i <= input.length - 1; ++i) {
    let arr = input[i].split(" ").map((n) => Number(n));
    map.push(arr);
}

for (let i = 0; i <= map.length - 1; ++i) {
    if (i === 0) {
        dp[0][0] = map[0][0];
        dp[0][1] = map[0][1];
        dp[0][2] = map[0][2];
    } else {
        dp[i][0] = map[i][0] + Math.min(dp[i - 1][1], dp[i - 1][2]);
        dp[i][1] = map[i][1] + Math.min(dp[i - 1][0], dp[i - 1][2]);
        dp[i][2] = map[i][2] + Math.min(dp[i - 1][0], dp[i - 1][1]);
    }
}

let min = Math.min(...dp.pop());
console.log(min);