백준 SILVER 1(RGB거리)

image

  • 사용 언어 : javascript

  • 해결 날짜 : 2023-02-03

  • 해결 방법 :

    • 프로그래머스 땅따먹기와 유사한 문제로 dp를 활용해 문제 해결
    • 각 집의 비용들이 저장된 costs 별 R, G, B마다 현재 인덱스를 제외한 나머지 인덱스의 최소값을 더함
    • 반복문 종료 후 costs의 마지막 인덱스에 모든 집을 다 칠했을 때의 최종값이 저장되므로 마지막 인덱스에서의 min을 구함
  • 회고 :

    • x
  • 코드

    const fs = require('fs');
    const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
    const input = fs.readFileSync(filePath).toString().trim();
    
    solution(input);
    
    function solution(props) {
      props = props.split('\n');
      const N = +props[0];
      const costs = props.slice(1).map((prop) => prop.split(' ').map((e) => +e));
    
      for (let i = 1; i < costs.length; i++) {
        costs[i][0] += Math.min(costs[i - 1][1], costs[i - 1][2]);
        costs[i][1] += Math.min(costs[i - 1][0], costs[i - 1][2]);
        costs[i][2] += Math.min(costs[i - 1][0], costs[i - 1][1]);
      }
    
      console.log(Math.min(...costs[N - 1]));
    }
    
  • 출처: 백준