[백준1149_자바스크립트(javascript)] - RGB거리

경이·2024년 10월 8일

𝑩𝑶𝑱 (𝒋𝒔)

목록 보기
210/325

🔴 문제

RGB거리


🟡 Sol

const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
const inputs = fs
  .readFileSync(path)
  .toString()
  .trim()
  .split('\n')
  .map((it) => it.split(' ').map(Number));
const n = Number(inputs.shift());

const dp = Array.from({ length: n }, () => Array(3).fill(0));
const R = [];
const G = [];
const B = [];

for (const input of inputs) {
  const [r, g, b] = input;
  R.push(r);
  G.push(g);
  B.push(b);
}

dp[0] = [R[0], G[0], B[0]];

for (let i = 1; i < n; i++) {
  dp[i][0] = Math.min(dp[i - 1][1], dp[i - 1][2]) + R[i];
  dp[i][1] = Math.min(dp[i - 1][0], dp[i - 1][2]) + G[i];
  dp[i][2] = Math.min(dp[i - 1][0], dp[i - 1][1]) + B[i];
}

console.log(Math.min(...dp[n - 1]));

🟢 풀이

⏰ 소요한 시간 : -

입력 받은 R, G, B값을 분리해 배열에 넣어준다.
그후 dp 배열 값을 채워줄 텐데, dp는 3차원 배열로 내가 현재 인덱스에서 r, g, b 각각을 칠했을 때 최소비용을 의미한다.
dp[0]은 [0번 집이 r로 칠했을때의 값, 0번 집이 g로 칠했을때의 값, 0번 집이 b로 칠했을때의 값] 이 된다.
이후 반복하면서 dp 배열을 채워주면 된다.


🔵 Ref

profile
록타르오가르

0개의 댓글