[프로그래머스] 숫자 변환하기 - JS

잡초·2024년 6월 18일
0
post-thumbnail

문제

풀이

function solution(x, y, n) {
    // dp 배열을 y+1 크기로 만들고 모든 값을 Infinity로 초기화
    const dp = new Array(y + 1).fill(Infinity);
    
    // 시작점 x의 값을 0으로 설정
    dp[x] = 0;
    
    // x부터 y까지 반복
    for (let i = x; i <= y; i++) {
        // i + n이 y보다 작거나 같으면 dp[i + n] 값을 변경
        if (i + n <= y) {
            dp[i + n] = Math.min(dp[i + n], dp[i] + 1);
        }
        // i * 2가 y보다 작거나 같으면 dp[i * 2] 값을 변경
        if (i * 2 <= y) {
            dp[i * 2] = Math.min(dp[i * 2], dp[i] + 1);
        }
        // i * 3이 y보다 작거나 같으면 dp[i * 3] 값을 변경
        if (i * 3 <= y) {
            dp[i * 3] = Math.min(dp[i * 3], dp[i] + 1);
        }
    }
    
    // dp[y]가 Infinity가 아니면 dp[y]를 반환하고, 그렇지 않으면 -1을 반환
    return dp[y] !== Infinity ? dp[y] : -1;
}
profile
개발자가 되고싶은 잡초

0개의 댓글