다윤 풀이
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt"; let [N, ...input] = require("fs") .readFileSync(filePath) .toString() .trim() .split("\n"); N = Number(N); // [N+1][3] 배열로 변경 const a = [[0, 0, 0]]; input.forEach((score) => a.push(score.split(" ").map((i) => Number(i.trim())))); // dp const d = Array.from({ length: N + 1 }, () => new Array(3).fill(0)); for (i = 1; i <= N; i++) { d[i][0] = Math.min(d[i - 1][1], d[i - 1][2]) + a[i][0]; d[i][1] = Math.min(d[i - 1][0], d[i - 1][2]) + a[i][1]; d[i][2] = Math.min(d[i - 1][0], d[i - 1][1]) + a[i][2]; } console.log(Math.min(d[N][0], d[N][1], d[N][2]));
민수 풀이
let [n, ...input] = require('fs').readFileSync(__dirname + "/../input.txt").toString().trim().split("\n"); //let [n, ...input] = require('fs').readFileSync("/dev/stdin").toString().trim().split("\n"); n = +n; input = input.map(e => e.trim().split(' ').map(Number)); for(let i = 1; i < n; i++){ input[i][0] += Math.min(input[i-1][1], input[i-1][2]); input[i][1] += Math.min(input[i-1][0], input[i-1][2]); input[i][2] += Math.min(input[i-1][0], input[i-1][1]); } console.log(Math.min(...input[n-1]));
송희 풀이
const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt"; const [n, ...houseColors] = fs.readFileSync(filePath).toString().trim().split("\n"); const colorPrice = houseColors.map((v, i) => v.split(" ").map((v, i) => +v)); for (i = 1; i < +n; i++) { colorPrice[i][0] += Math.min(colorPrice[i - 1][1], colorPrice[i - 1][2]); colorPrice[i][1] += Math.min(colorPrice[i - 1][0], colorPrice[i - 1][2]); colorPrice[i][2] += Math.min(colorPrice[i - 1][0], colorPrice[i - 1][1]); } console.log(Math.min(...colorPrice[n - 1]));
승민 풀이
let fs = require('fs'); //const [n, ...arr] = fs.readFileSync('/dev/stdin').toString().split('\n'); const [n, ...arr] = fs.readFileSync(__dirname+'/ex2.txt').toString().split('\n'); const N = +n; let dp = arr.map(v => v.split(' ').map(Number)); for (let i=1; i<N; i++) { dp[i][0] += Math.min(dp[i-1][1], dp[i-1][2]); dp[i][1] += Math.min(dp[i-1][0], dp[i-1][2]); dp[i][2] += Math.min(dp[i-1][1], dp[i-1][0]); } console.log(Math.min(...dp[N-1]));