본문 바로가기
코딩테스트(알고리즘)/baekjoon

[baekjoon] 1463 1로만들기 (Javascript)

by Cafe Mocha 2022. 6. 26.

1463번: 1로 만들기 (acmicpc.net)

 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net


접근 : DP

 

Javascript

let input = require("fs")
  .readFileSync("input.txt") //"/dev/stdin"
  .toString()
  .split("\n")
  .map((val) => val.trim());

function solution(input) {
  let n = +input[0];

  let DP = new Array(n + 1).fill(0);
  DP[0] = 100000000;
  DP[1] = 0;
  let i = 2;
  while (i <= n) {
    let dp1 = i % 3 === 0 ? i / 3 : 0;
    let dp2 = i % 2 === 0 ? i / 2 : 0;
    let dp3 = i - 1;
    DP[i] = Math.min(DP[dp1] + 1, DP[dp2] + 1, DP[dp3] + 1);
    i++;
  }
  console.log(DP[n]);
}

solution(input);