[baekjoon] #1149 RGB๊ฑฐ๋ฆฌ (Node.js)

seongminnยท2023๋…„ 1์›” 4์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
22/26
post-thumbnail

๐Ÿ“– ๋ฌธ์ œ

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


โ˜ƒ๏ธ ํ’€์ด

ํ•œ์ฐธ์„ ๊ณ ๋ฏผํ•˜๋˜ ๋ฌธ์ œ. ์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์— ์˜ฌ๋ ค์ง„ ๊ธ€๋“ค์„ ๋ณด๊ณ  ํžŒํŠธ๋ฅผ ์–ป์—ˆ๋‹ค.๊ฑฐ์˜ ๋‹ต์„ ํ™•์ธํ•œ ์ˆ˜์ค€์ด์ง€๋งŒ..

๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค RGB ์ƒ‰์ƒ์œผ๋กœ ์ง‘์„ ์ƒ‰์น ํ•˜๋Š” ๋น„์šฉ์ด ๊ฐ๊ฐ ์ฃผ์–ด์ง€๊ณ , ๊ฐ ๋น„์šฉ ๊ฐ๊ฐ์— ๋Œ€ํ•ด์„œ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋‹ค์Œ ๋‹จ๊ณ„ ๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ๋“ค ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๋”ํ•œ๋‹ค.

์ฒ˜์Œ์—๋Š” ์œ„ ๊ณผ์ •์„ switch๋ฌธ์„ ํ†ตํ•ด ์ผ์ผํžˆ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋‚˜.. ํ–ˆ๋‹ค.
๊ทผ๋ฐ { 0: [1, 2], 1: [0, 2], 2: [0, 1] } ์ด๋ ‡๊ฒŒ ๊ฐ์ฒด๋กœ ์„ ํƒํ•  ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ฐธ ๊ฐ„๋‹จํ•œ๋ฐ ์™œ ๋‚œ ์ด๋Ÿฐ ๊ฑธ ์ƒ๊ฐํ•ด๋‚ด์ง€ ๋ชปํ•˜๋Š”์ง€.. ๋˜ ํ•˜๋‚˜ ๋ฐฐ์›Œ๊ฐ„๋‹ค.

์•„๋ฌดํŠผ ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์ฒซ๋ฒˆ์งธ RGB๊ฐ’ ๊ฐ๊ฐ์—์„œ ์ถœ๋ฐœํ–ˆ์„ ๊ฒฝ์šฐ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๊ณ , ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ๋งˆ๋‹ค dp ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค. ๋ชจ๋“  ๊ณผ์ •์ด ๋๋‚œ ๋’ค, dp ๋ฐฐ์—ด์˜ ์ตœ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


๐Ÿ’ฝ ์†Œ์Šค์ฝ”๋“œ

const input = require('fs').readFileSync('input.txt').toString().split('\n');
const n = Number(input.shift());
const nx = { 0: [1, 2], 1: [0, 2], 2: [0, 1] };
let dp = [0, 0, 0];

for (let i = 0; i < n; i++) {
  const arr = input.shift().split(' ').map(Number);

  for (let j = 0; j < 3; j++) {
    arr[j] += Math.min(dp[nx[j][0]], dp[nx[j][1]]);
  }

  dp = arr;
}

console.log(Math.min(...hold));
profile
๋Œ๋ฉฉ์ด๋„ ๊ฐœ๋ฐœ ํ•  ์ˆ˜ ์žˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€