슈콩

[프로그래머스] Lv.2 숫자 변환하기 본문

Algorithms/Programmers

[프로그래머스] Lv.2 숫자 변환하기

shukong 2025. 10. 16. 20:44

 

 

[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/154538

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

[소스 코드]

import java.util.*;
class Solution {
    public int solution(int x, int y, int n) {
        int answer = 0;
        boolean[] visit = new boolean[y+1];
        Queue<int[]> q = new LinkedList<>();
        visit[x] = true;
        q.offer(new int[]{x,0});
        while(!q.isEmpty()){
            int[] curr = q.poll();
            if(curr[0]==y){
                answer = curr[1];
                break;
            }
            if(curr[0]+n<=y && !visit[curr[0]+n]){
                visit[curr[0]+n] = true;
                q.offer(new int[]{curr[0]+n,curr[1]+1});
            }
            if(curr[0]*2<=y && !visit[curr[0]*2]){
                visit[curr[0]*2] = true;
                q.offer(new int[]{curr[0]*2,curr[1]+1});
            }
            if(curr[0]*3<=y && !visit[curr[0]*3]){
                visit[curr[0]*3] = true;
                q.offer(new int[]{curr[0]*3,curr[1]+1});
            }
        }
        if(x==y) return 0;
        return answer==0 ? -1 : answer;
    }
}