๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 1697๋ฒ ์จ๋ฐ๊ผญ์ง ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
๋ฌธ์ ์ ๊ทผ
์ด ๋ฌธ์ ๋ BFS ์ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ์ด์ฉํ๋ค๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
ํด๊ฒฐ๋ฒ
bfs๋ก ๊ฐ๊ฐ์ ์ผ์ด์ค์ ๋ํด์ ํ์ธ์ ํ๋ค.
- ํ์ฌ ๊ฑฐ๋ฆฌ์์ - 1 ํ ๊ฒฝ์ฐ
- ํ์ฌ ๊ฑฐ๋ฆฌ์์ + 1 ํ ๊ฒฝ์ฐ
- ํ์ฌ ๊ฑฐ๋ฆฌ์์ * 2 ํ ๊ฒฝ์ฐ
๊ฐ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ queue ์ ๋ฃ๊ณ bfs ๋ฅผ ์งํํ๋ฉด ๋๋ค.
์ต๋จ ์๊ฐ์ queue ์ ๋ฃ์ ๋๊ฐ ๊ฐ์ฅ ์ต๋จ์ ์๊ฐ ์ด๋ผ๊ณ ๋ณด๊ณ ํด๋น ์๊ฐ์์ + 1์ ํ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
์ ๋ต ์ฝ๋
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] nk = br.readLine().split(" ");
int n = Integer.parseInt(nk[0]);
int k = Integer.parseInt(nk[1]);
ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
int[] visited = new int[100_001];
for (int i = 1; i < 100_001; i++) {
graph.add(new ArrayList<>());
}
Queue<Integer> queue = new LinkedList<>();
visited[n] = 0;
queue.add(n);
while(!queue.isEmpty()) {
int front = queue.remove();
if(front == k) {
System.out.println(visited[front]);
break;
}
int[] next = {front + 1, front - 1, front * 2};
for (int i = 0; i < next.length; i++) {
if(0 <= next[i] && next[i] <= 100_000) {
if(visited[next[i]] == 0) {
visited[next[i]] = visited[front] + 1;
queue.add(next[i]);
}
}
}
}
bw.flush();
bw.close();
}
}
๋๊ธ