본문 바로가기
PS/프로그래머스

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

by 진꿈청 2024. 6. 22.
import java.util.*;

class Solution {
    public int solution(int x, int y, int n) {
        int answer = 0;
        
        Queue<int[]> q = new LinkedList<>();

        q.add(new int[]{x, 0});
        
        boolean[] visited = new boolean[y - x + 1];
        
        while(!q.isEmpty()){
            int[] curr = q.poll();
            
            if(curr[0] == y){
                return curr[1];
            } 
            else{
                if(curr[0] * 3 <= y && !visited[curr[0] * 3 - x]){
                    q.add(new int[]{curr[0] * 3, curr[1] + 1});
                    visited[curr[0] * 3 - x] = true;
                } if(curr[0] * 2 <= y && !visited[curr[0] * 2 - x]){
                    q.add(new int[]{curr[0] * 2, curr[1] + 1});
                    visited[curr[0] * 2 - x] = true;
                } if(curr[0] + n <= y && !visited[curr[0] + n - x]){
                    q.add(new int[]{curr[0] + n, curr[1] + 1});
                    visited[curr[0] + n - x] = true;
                } 


            }
        }
        
        
        return -1;
    }
}