ģ•Œź³ ė¦¬ģ¦˜/백준

[ 백준 / BOJ 16953 ] A -> B ( JAVA / ģžė°” )

KIMHYEYUN 2021. 11. 2. 21:32
ė°˜ģ‘ķ˜•

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

 

16953번: A → B

첫째 줄에 A, B (1 ≤ A < B ≤ 109)ź°€ 주얓진다.

www.acmicpc.net

 

문제


ģ •ģˆ˜ A넼 B딜 바꾸려고 ķ•œė‹¤. ź°€ėŠ„ķ•œ ģ—°ģ‚°ģ€ ė‹¤ģŒź³¼ ź°™ģ€ 두 ź°€ģ§€ģ“ė‹¤.

  • 2넼 ź³±ķ•œė‹¤.
  • 1ģ„ ģˆ˜ģ˜ ź°€ģž„ ģ˜¤ė„øģŖ½ģ— ģ¶”ź°€ķ•œė‹¤. 

A넼 B딜 ė°”ź¾øėŠ”ė° ķ•„ģš”ķ•œ ģ—°ģ‚°ģ˜ ģµœģ†Ÿź°’ģ„ źµ¬ķ•“ė³“ģž.

 

ģž…ė „


첫째 줄에 A, B (\( 1 \leq A < B \leq 10^{9} \))

 

출렄


A넼 B딜 ė°”ź¾øėŠ”ė° ķ•„ģš”ķ•œ ģ—°ģ‚°ģ˜ ģµœģ†Ÿź°’ģ— 1ģ„ ė”ķ•œ ź°’ģ„ ģ¶œė „ķ•œė‹¤. ė§Œė“¤ 수 ģ—†ėŠ” ź²½ģš°ģ—ėŠ” -1ģ„ ģ¶œė „ķ•œė‹¤.

ģ½”ė“œ


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Set;
import java.util.StringTokenizer;

public class Main_BOJ_16953_AtoB {
    static long A, B;
    static Set<Long> isVisited;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());
        A = Long.parseLong(stringTokenizer.nextToken());
        B = Long.parseLong(stringTokenizer.nextToken());

        isVisited = new HashSet<>();
        Queue<long[]> queue = new LinkedList<>();
        queue.add(new long[]{A, 0});
        isVisited.add(A);

        while(!queue.isEmpty()){
            long now = queue.peek()[0];
            long cnt = queue.peek()[1];
            queue.poll();

            if(now == B){
                System.out.println(cnt+1);
                return;
            }

            if(now * 2 <= B && !isVisited.contains(now*2)){
                isVisited.add(now*2);
                queue.add(new long[]{now*2, cnt+1});
            }
            
            if(now * 10 + 1 <= B && !isVisited.contains(now*10+1)){
                isVisited.add(now*10+1);
                queue.add(new long[]{now*10+1, cnt+1});
            }
        }
        
        System.out.println(-1);
    }
}

 

728x90
ė°˜ģ‘ķ˜•