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

홍성진·2023년 2월 11일
0

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

주어진 숫자들을 한정된 연산으로 조작하여 일치시킬 수 있는지 판단하는 문제입니다. y가 백만보다 작다는 조건이 있기 때문에 편하게 앞에서부터 dp로 채워나갔습니다.

class Solution {
    public int solution(int x, int y, int n) {
        int answer = 0;
        int[] dp = new int[y + 1];
        
        for (int i = 0; i < x; i++) {
            dp[i] = 1000000;
        }
        dp[x] = 0;
        
        for (int i = x + 1; i < y + 1; i++) {
            if (i >= n) {
                dp[i] = 1 + dp[i - n];
            } else {
                dp[i] = 1000000;
            }
            if (i % 2 == 0) {
                dp[i] = Math.min(dp[i], 1 + dp[i / 2]);
            }
            if (i % 3 == 0) {
                dp[i] = Math.min(dp[i], 1 + dp[i / 3]);
            }
        }
        
        answer = dp[y];
        
        if (answer >= 1000000) {
            return -1;
        }
        return answer;
    }
}

0개의 댓글