์๊ณ ๋ฆฌ์ฆ์ ์ ํ๋ฉด ๊น๋จน๋ ๊ฒ ๊ฐ๋ค.
BFS/DFS๋ ๋ค๋ฅธ ์ ํ์ ๋นํด ๋ง์ด ํ์ด๋ดค์ด์ ์์ฝ๊ฒ ํ ์ ์์๊ฑฐ๋ผ๊ณ ์๊ฐํ๋๋ฐ
ํ ๋ฒ์ ์ฑ๊ณตํ์ง ๋ชปํ๋ค. ^-^ ๋จธ์ฑ
๋ฐฑ์ค 1697 ์จ๋ฐ๊ผญ์ง ๋ฌธ์
์๋น์ด๊ฐ ๋์์ ์ฐพ๊ธฐ ์ํด์ ํน์ ์ด๋ ์กฐ๊ฑด์ ๋ง์ถฐ ํ์ํ๋ ๋ฌธ์ ์ด๋ค.
์ ํ์ ์ธ BFS ๋ฌธ์ ์ธ ๋ฏ ํ๋ค.
< ์ด๋ ์กฐ๊ฑด >
- X - 1
- X + 1
- 2 * X
์ด๋ ์กฐ๊ฑด์ด ๊ท์น์ ์ด๋ฏ๋ก ํ์ ์์น๊ฐ ๋ฐ๋ณต๋ ์ ์๋๋ฐ ์ฒ์์ ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ๋นผ๋จน์ ์ด์ ๋…..!
๊ทธ๋ฅ ์๋ชป ์๊ฐํ๋ค.
์ค๋ช ํ๊ธฐ๋ ์ด๋ ต๊ฒ ์๊ฐ์ ์ค๋ฅ๋ฅผ ๋ฒํด์ ์ ๊ธฐ๊ฐ ์ด๋ ต๋ค..
๊ฒฐ๋ก ์
ํน์ ์ง์ ์ ๋์ฐฉํ์ ๋, ๊ทธ ์ง์ ์์ ์ด๋ํ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์(3๊ฐ์ง ์ด๋ ์กฐ๊ฑด)๋ ํ ๋ฒ์ ํ์ ๋ฃ์ด์ ๋ค์ ๋จ๊ณ๋ก ๋์๊ฐ๊ธฐ ๋๋ฌธ์ ํ ๋ฒ ๋ฐฉ๋ฌธํ ๊ณณ์ ๋ค์ ๋์์ฌ ํ์๊ฐ ์๋ค.
ํนํ, ์ด ๋ฌธ์ ๋ ์กฐ๊ฑด์ด X-1 ๊ณผ X+1 ์ด๋ผ์ ํ ๋จ๊ณ๋ง์๋ ๋ฐ๋ณต ๋ฐฉ๋ฌธ์ด ๊ฐ๋ฅํ๋ค.
์) 5์์ X-1 ์กฐ๊ฑด์ผ๋ก ์ด๋ํ์ฌ 4๋ก ๊ฐ๊ณ , 4์์ X+1 ์กฐ๊ฑด์ผ๋ก ์์ง์ด๋ฉด 5
๋ถํ์ํ ํ์์ด๋๊น..?
์๋ฌดํผ ๋ฐฉ๋ฌธ์ฒดํฌ ๋ฃ์ด์ ์ฑ๊ณตํ๋ค.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main { // BOJ_1697_์จ๋ฐ๊ผญ์ง
static int n, k;
static boolean[] visit = new boolean[100001];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken()); // ์๋น
k = Integer.parseInt(st.nextToken()); // ๋์
bfs();
}
private static void bfs(){
ArrayDeque<int[]> que = new ArrayDeque<>();
que.offer(new int[] {n, 0});
while (!que.isEmpty()){
int[] tmp = que.poll();
int cl = tmp[0]; //ํ์ฌ ์์น
int ct = tmp[1]; //ํ์ฌ ์๊ฐ
visit[cl] = true;
if (cl == k){
System.out.println(ct);
break;
}
if (valid(cl-1)) {
que.offer(new int[] {cl-1, ct+1});
}
if (valid(cl+1)) {
que.offer(new int[] {cl+1, ct+1});
}
if (valid(cl*2)) {
que.offer(new int[] {cl*2, ct+1});
}
}
}
private static boolean valid(int n){
if(n < 0 || n > 100000 || visit[n]){
return false;
}
return true;
}
}
๊นจ๋ฌ์ ์
์๊ณ ๋ฆฌ์ฆ ์ข ๊พธ์คํ ํ์~^-^
'์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฌธ์ ํ์ด] ๋ฐฑ์ค 5427 ๋ถ (1) | 2025.02.14 |
---|---|
[๋ฌธ์ ํ์ด] SWEA 4615. ์ฌ๋ฏธ์๋ ์ค์ ๋ก ๊ฒ์ (0) | 2024.08.12 |
[๋ฌธ์ ํ์ด] ํ๋ณตํ ์์ด์ ๊ฐ์ (feat. ์ฝ๋ํธ๋ฆฌ ์กฐ๋ณ๊ณผ์ : 4์ฃผ์ฐจ) (3) | 2024.08.11 |
[์ด๋ก ] ๋ฐฐ์ด (feat. ์ฝ๋ํธ๋ฆฌ ์กฐ๋ณ๊ณผ์ : 3์ฃผ์ฐจ) (1) | 2024.08.04 |
[์ด๋ก ] ๊ณต๊ฐ๋ณต์ก๋ (feat. ์ฝ๋ํธ๋ฆฌ ์กฐ๋ณ๊ณผ์ : 1์ฃผ์ฐจ) (0) | 2024.07.19 |