ģź³ 리ģ¦/ė°±ģ¤
[ ė°±ģ¤ / 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
ė°ģķ