[CDT - Javascript] 프로그래머스 연습문제 @ 숫자 변환하기

김현수·2024년 1월 8일
0

cdt

목록 보기
48/51
post-thumbnail

🖋️ 숫자 변환하기


# 문제 설명

자연수 x를 y로 변환

  • 순서

    • 1 ) x + n
    • 2 ) x * 2
    • 3 ) x * 3
  • 매개 변수

    • 자연수 x, y, n 이 매개변수
  • 반환값

    • x를 y로 변환하기 위해
      필요한 최소 연산 횟수를 return
    • x를 y로 만들 수 없다면 -1을 return

  • 📢 제한사항

    • 1 ≤ x ≤ y ≤ 1,000,000
    • 1 ≤ n < y

  • 📰 입출력 예시

xynresult
104052
1040301
254-1



  • CODE

function solution(x, y, n) {
    const dp = new Array(y+1).fill(Infinity);
    
    dp[x] = 0;
    for(let i = x; i <= y; i++){
        dp[i + n] = dp[i+n] > dp[i] + 1 ? dp[i] + 1 : dp[i+n];
        dp[i * 2] = dp[i*2] > dp[i] + 1 ? dp[i] + 1 : dp[i*2];
        dp[i * 3] = dp[i*3] > dp[i] + 1 ? dp[i] + 1 : dp[i*3];
    }
    
    return dp[y]!==Infinity? dp[y] : -1;
}

풀이

  • DP 를 통해 solution 구하기

  • idx 에 해당 값, value 에 해당 카운팅
  • x 를 시작으로 각 연산 dp
profile
일단 한다

0개의 댓글