๋ฐ์ํ
https://www.acmicpc.net/problem/16953
๋ฌธ์
์ ์ 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
๋ฐ์ํ
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 2671 ] ์ ์ํจ ์๋ณ ( ์๋ฐ / JAVA ) (0) | 2021.11.10 |
---|---|
[ ๋ฐฑ์ค / BOJ 10828 ] ์คํ ( ์๋ฐ / JAVA ) (0) | 2021.11.02 |
[ ๋ฐฑ์ค / BOJ 1484 ] ๋ค์ด์ดํธ ( ์๋ฐ / JAVA ) (0) | 2021.11.02 |
[ ๋ฐฑ์ค / BOJ 3190 ] ๋ฑ ( ์๋ฐ / JAVA ) (0) | 2021.11.02 |
[ ๋ฐฑ์ค / BOJ 9461 ] ํ๋๋ฐ ์์ด ( ์๋ฐ / JAVA ) (0) | 2021.11.02 |