[JavaScript] 백준 1463 : 1로 만들기
2022. 7. 13. 00:13ㆍAlgorithm/백준
class : 3
level : silver 3
문제 링크 : 1로 만들기
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
My Solution
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim();
const N = parseInt(input);
let dp = new Array(N+1).fill(0);
dp[2] = 1;
dp[3] = 1;
dp.forEach((value,index)=>{
if(index>3){
let temp = [dp[index-1]];
index%2===0?temp.push(dp[index/2]):0;
index%3===0?temp.push(dp[index/3]):0;
dp[index] = Math.min(...temp)+1;
}
})
console.log(dp[N]);
느낀점
처음에는 Greedy 알고리즘을 떠올릴 수 있지만 Dynamic Programming 문제였다. 반례로는 22라는 숫자를 들 수 있다.

이전에도 비슷한 문제를 보았기에 어렵지 않았다.
'Algorithm > 백준' 카테고리의 다른 글
| [JavaScript] 백준 1927 : 최소 힙 (0) | 2022.07.27 |
|---|---|
| [JavaScript] 백준 10845 : 큐 (0) | 2022.07.20 |
| [JavaScript] 백준 2839 : 설탕 배달 (0) | 2022.07.14 |
| [JavaScript] 백준 1874 : 스택 수열 (0) | 2022.07.13 |
| [백준] 1003번 피보나치 함수 (0) | 2022.02.06 |