๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/16953)
<A -> B>
๋ฌธ์ ํ์ด
bfs๋ฅผ ํ์ฉํ์ฌ A๋ฅผ B๋ก ๋ฐ๊พธ๋๋ฐ ํ์ํ ์ฐ์ฐ์ ์ต์๊ฐ์ ๊ตฌํ๋ค.
- my solution (Java)
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.StringTokenizer;
public class _16953_ { // A -> B
public static void main(String[] args) throws IOException {
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(bf.readLine());
long A=Integer.parseInt(st.nextToken());
long B=Integer.parseInt(st.nextToken());
Queue<long[]>queue=new LinkedList<>();
queue.add(new long[] {A,(long) 0});
long result=0;
while(!queue.isEmpty()) {
long temp[]=queue.poll();
long num=temp[0]*2; // 2๋ฅผ ๊ณฑํ๋ค
if(num==B) {
result=temp[1]+1;
break;
}
if(num<B) queue.add(new long[] {num, temp[1]+1});
num=temp[0]*10+1; // 1์ ์์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์ถ๊ฐํ๋ค
if(num==B) {
result=temp[1]+1;
break;
}
if(num<B) queue.add(new long[] {num, temp[1]+1});
}
if(result==0) System.out.println(-1);
else System.out.println(result+1);
}
}
- Main
- A์ B ์ ๋ ฅ
- Queue์ [์ ์, ํ์ํ ์ฐ์ฐ์ ์] ๋ฐฐ์ด์ ๋ฃ์ด์ค๋ค.
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณตํ๋ค -> queue์์ ๋ฝ์ ๊ฐ์ 2๋ฐฐ ํ ํ B๊ฐ๊ณผ ๊ฐ์ง ์๋ค๋ฉด queue์ ๋ฃ์ด์ค๋ค. 1์ ์์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์ถ๊ฐํ๋ ๊ฒ์ queue์์ ๋ฝ์ ๊ฐ์ 10์ ๊ณฑํ ํ 1์ ๋ํด์ฃผ๋ฉด ๋๋ค. ๊ทธ ๊ฐ์ด ๋ง์ฐฌ๊ฐ์ง๋ก B์ ๊ฐ์ง ์๋ค๋ฉด queue์ ๋ฃ์ด์ค์ผ๋ก์จ ๋ฐ๋ณตํ๋ค. ๋ง์ฝ B์ ๊ฐ๋ค๋ฉด ๋ฐ๋ก ์ข ๋ฃํด์ค๋ค. (๋ฐ๋ ๊ฐ์ด B์ ๊ฐ์ง ์์ ๋๋ B๋ณด๋ค ๊ฐ์ด ์์ ๋ queue์ ๋ฃ์ด์ฃผ๋ ์กฐ๊ฑด์ ์ถ๊ฐํ์๋ค -> B๋ณด๋ค ํฌ๋ฉด ์ด๋ค ์ฐ์ฐ์ ํด๋ B๋ก ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. )
- result ๊ฐ์ด ์ด๊ธฐ๊ฐ์ธ 0๊ณผ ๊ฐ๋ค๋ฉด B๋ก ๋ง๋ค ์ ์๋ค๋ ๋ป์ด๋ฏ๋ก -1์ ์ถ๋ ฅํ๊ณ 0์ด ์๋๋ผ๋ฉด result ๊ฐ์ ์ถ๋ ฅํด์ค๋ค.
์๊ฐ๐ค
์ฒ์์ ํ๋ฆฐ ์ด์ ๋ ๊ฐ๋จํ๋ค. ๋ฒ์ ์กฐ๊ฑด์ ๋ณด์ง ์์ int๋ฅผ ์ผ๊ธฐ ๋๋ฌธ์ด์๋ค. ์ด๊ฑธ ๋ ๋ชป ์ฐพ๊ณ ...
๋ ๋ฒ์งธ๋ ๋ธ๋ก๊ทธ๋ฅผ ์์ฑํ๋ค๊ฐ ํ์ ์๋ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ์ฌ ์์ ํ์๋๋ ์๊ฐ์ด ๊ฑฐ์ ์ ๋ฐ์ผ๋ก ์ค์๋ค. ใ _<
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 13460_๊ตฌ์ฌ ํ์ถ 2 (0) | 2022.12.19 |
---|---|
[Baekjoon] 4179_๋ถ! (0) | 2022.12.16 |
[Baekjoon] 10769_ํ๋ณตํ์ง ์ฌํ์ง (0) | 2022.12.13 |
[Baekjoon] 18405_๊ฒฝ์์ ์ ์ผ (1) | 2022.12.12 |
[Baekjoon] 2206_๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (0) | 2022.10.23 |