다윤 풀이
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt"; let N = require("fs").readFileSync(filePath).toString().trim(); N = Number(N); const dp = new Array(N + 1).fill(0); for (let i = 2; i <= N; i++) { // 기본적으로 -1 한 것 dp[i] = dp[i - 1] + 1; // 2로 나누어 떨어짐 if (i % 2 == 0) { dp[i] = Math.min(dp[i / 2] + 1, dp[i]); } // 3으로 나누어 떨어짐 if (i % 3 == 0) { dp[i] = Math.min(dp[i / 3] + 1, dp[i]); } } console.log(dp[N]);
민수 풀이
let num = parseInt(require('fs').readFileSync(__dirname + "/../input.txt").toString().trim()); // let num = parseInt(require('fs').readFileSync("/dev/stdin").toString().trim()); const dp = new Array(num+1).fill(0); for(let i = 2; i <= num; i++){ dp[i] = dp[i-1] + 1; if(i % 2 == 0) dp[i] = Math.min(dp[i], dp[i/2]+1); if(i % 3 == 0) dp[i] = Math.min(dp[i], dp[i/3]+1); } console.log(dp[num])
송희 풀이
승민 풀이
let fs = require('fs'); //const inputs = fs.readFileSync('/dev/stdin').toString().split('\n'); const inputs = fs.readFileSync(__dirname+'/ex2.txt').toString().split('\n'); const n = Number(inputs[0]); let dp = [0, 0, 1, 1, 2]; for (let i=5; i<n+1; i++) { let a3 = a2 = 10000, a1 = dp[i-1]; if (i%3 === 0) { a3 = dp[i/3]; } if (i%2 === 0) { a2 = dp[i/2]; } dp.push(1 + Math.min(a1, a2, a3)); } console.log(dp[n]);