๐พ ์๊ณ ๋ฆฌ์ฆ
- BFS(๊ฐ์ด ์์๊ฒผ์ง๋ง BFS)
- ๋ค๋ฅธ ์น๊ตฌ๋ค์ ํ์ด๋ฅผ ๋ณด๋ฉด ์ญ์ผ๋ก ์๊ฐํด์ B-> A๋ก ๊ฐ๋ ํ์ด๋ ๋ณผ ์ ์์๋ค.
- ์๋ฃํ ์ ๋ณด๊ธฐ (int ์ ๋ฒ์๋ฅผ ๋์ด๊ฐ๋์ง?)
๐พ ์๊ฐ ํฌ์ธํธ
- cnt(์ฐ์ฐํ์)๋ฅผ ์ด๋์ ๊ณ์ ํด์ฃผ์ด์ผ ๋๋์ง ๊ณ ๋ฏผ์ด ๋ง์๋ค. ๊ทธ๋ฌ๋ Pos(์ฌ์ฉ์ ์ ์ ํด๋์ค)๋ฅผ ๋ง๋ค์ด์ num๊ณผ cnt๋ฅผ ์ธ์๋ก ํ์ฌ queue์ ๋ฐ๋ณต์ ์ผ๋ก ์ฝ์ ์ด ๋๋๋ก ์ฝ๋๋ฅผ ์งฐ๋ค.
- ์ข ๋ฃ์กฐ๊ฑด์ ์ง์ flag๋ฅผ ์ ์ธํด ์ฃผ์๋ค. ์ด๋ฅผ ํตํด ์ต์ข ๊ฐ์ธ B์ ๋๋ฌํ๋์ง ์ํ๋์ง ์ฒดํฌํ ์ ์์๋ค.
- ์ฒ์์ int๋ก ์ ์ธํ์์ผ๋, ์ฐ์ฐ์ ๊ฑฐ์น๋ฉด์ int์ ๋ฒ์๋ฅผ ๋์ด๊ฐ๋ค๋ ๊ฒ์ ์์๋ค. num์ long์ผ๋ก ์ ์ธํ๋ฉด ์ค๋ฌด์คํ๊ฒ ํจ์คํ ์ ์์๋ค.
๐พ ์์ค์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main_16953 {
static class Pos {
long num;
int cnt;
public Pos(long num, int cnt) {
super();
this.num = num;
this.cnt = cnt;
}
}
static int A;
static int B;
static boolean flag;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
A = Integer.parseInt(st.nextToken());
B = Integer.parseInt(st.nextToken());
bfs(A);
if (flag == false) {
System.out.println(-1);
}
}
private static void bfs(int num) {
Queue<Pos> queue = new LinkedList<>();
queue.add(new Pos(num, 1));
while (!queue.isEmpty()) {
Pos t = queue.poll();
// ์ข
๋ฃ์กฐ๊ฑด
if (t.num * 2 == B || t.num * 10 + 1 == B) {
flag = true;
System.out.println(t.cnt + 1);
return;
}
// ๋ฐ๋ณต(b์ ๋๋ฌํ ๋๊น์ง)
if (t.num * 2 < B) {
queue.add(new Pos(t.num * 2, t.cnt + 1));
}
if (t.num * 10 + 1 < B) {
queue.add(new Pos(t.num * 10 + 1, t.cnt + 1));
}
}
}
}
๐ต๐ซ ๊ณต๋ถํด์ผ ํ ์
- ์ด๋ค ๋ฌธ์ ๋ cnt๊ฐ ๋ฐ๋ชฉ์ ์ก์ ๋๊ฐ ์ฌ์ฌ์น์๊ฒ ๋ง๋ค. ์ฌ๊ธฐ์ ๊ธฐ ๋ค cnt๋ฅผ ํด๋ณด๋ฉด์ ์ฝ๋๋ฅผ ๋์์ํค๋๋ฐ, ์ด๋ฐ ์ต๊ด์ ๊ณ ์ณ์ผํ ํ์๊ฐ ์๋ ๊ฒ ๊ฐ๋ค.
- ์๋ฃํ์ ๊ผผ๊ผผํ ๋ณด์.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ_1182]๋ถ๋ถ์์ด์ ํฉ (์ค๋ฒ 2) - JAVA (3) | 2023.11.30 |
---|---|
[BOJ_14500] ํ ํธ๋ก๋ฏธ๋ ธ (๊ณจ๋ 4) - JAVA (1) | 2023.11.02 |
[BOJ_7576] ํ ๋งํ (๊ณจ๋ 5) - JAVA (1) | 2023.10.11 |
[BOJ_2468] ์์ ์์ญ (์ค๋ฒ 1) (2) | 2023.10.09 |
[BOJ_15686] ์นํจ ๋ฐฐ๋ฌ (๊ณจ๋ 5) (1) | 2023.10.08 |