09009

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

Algorithm
[프로그래머스 lv2] 숫자 변환하기
09009 2023. 12. 15

문제 보기

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 해결

https://www.acmicpc.net/problem/1697

 

1697번: 숨바꼭질

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

백준에 있는 숨바꼭질이랑 비슷한 문제이다.

 

 

소스 코드

// https://school.programmers.co.kr/learn/courses/30/lessons/154538
import java.util.*;
class Solution {
    public int solution(int x, int y, int n) {
        int answer = 0;
        
        int[] dp = new int[1000001];
        Queue<Integer> queue = new LinkedList<>();
        
        queue.add(x);
        
        while (!queue.isEmpty()) {
            int num = queue.poll();
            if (num == y) 
                return dp[num];
            int[] arr = {num + n, num * 2, num * 3};
            for (int a : arr) {
                if (a >= 0 && a < 1000001 && dp[a] == 0) {
                    dp[a] = dp[num] + 1;
                    queue.add(a);
                }
            }
        }
        
        return -1;
    }
}