๋ฌธ์
https://www.acmicpc.net/problem/12851
๋ด ๋ฌธ์ ํ์ด
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class BOJ_12851 {
static Deque<int[]> que;
static int[] visited = new int[100_001];
static int n, k, cnt;
public static int bfs() {
while(!que.isEmpty()) {
int[] now = que.removeFirst();
int x = now[0];
int sec = now[1];
int[] cal = {x+1, x-1, x*2};
for(int i = 0; i < 3; i++) {
if(cal[i] == k) { // ๋์ ์ฐพ์ผ๋ฉด ๋์ ์์น์ visited ์ต์๊ฐ ๊ฐฑ์
if(visited[k] > sec+1) {
visited[k] = sec+1;
cnt = 1;
} else if(visited[k] == sec+1) {
cnt++;
}
continue;
}
if(cal[i] < 0 || cal[i] >= visited.length || visited[cal[i]] <= sec) continue;
que.add(new int[]{cal[i], sec+1});
visited[cal[i]] = sec+1;
}
}
return visited[k];
}
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(in.readLine());
n = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());;
if(n == k) System.out.println(0 + "\n" + 1);
else {
for(int i = 0; i < visited.length; i++) visited[i] = Integer.MAX_VALUE;
que = new ArrayDeque<>();
que.add(new int[]{n, 0});
System.out.println(bfs() + "\n" + cnt);
}
}
}
๐ BFS ๋ฌธ์
โ๏ธ #13549 ์จ๋ฐ๊ผญ์ง3 ๋ฌธ์ ์ ๋งค์ฐ ์ ์ฌ!
- visited ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๋งค ์๋ฆฌ์ ์ต์ ํ์ ์๊ฐ์ ์ ๋ฐ์ดํธํด์ค๋ค๋ ์ ์ ์จ๋ฐ๊ผญ์ง3 ๋ฌธ์ ์ ๊ฐ๋ค.
- ์ด ๋ฌธ์ ์ ํฌ์ธํธ๋ ๋์์ ๋ง๋ฌ์ ๋!!
๋์์ ๋ง๋ฌ์ ๋, visited ๋ฐฐ์ด์ ๋์ ์๋ฆฌ์ธ visited[k] ์๋ฆฌ์ ์ ์ฅ๋์ด์๋ ๊ฐ์ด
ํ์ฌ ํ์ํ๋ ๊ฒฝ๋ก์ ์๊ฐ๋ณด๋ค ๋ ํฌ๋ค๋ฉด, ๋น์ฐํ visited[k]์ ์ต์๊ฐ์ ๊ฐฑ์ ํด์ค์ผํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๋ visited[k]๋ง ๊ฐฑ์ ์์ผ์ค ๊ฒ์ด ์๋๋ผ, cnt๋ ํจ๊ป ์ด๊ธฐํํด์ค์ผ ํ๋ค. - ๋์์ ์ฐพ๋๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ์ ์ต์๊ฐ์ด ๋ณ๊ฒฝ๋๋ค๋ ๊ฒ์
๊ทธ ์ ๊น์ง ๋์ ํ๋ ํด๋น ์ต์ ํ์ ์๊ฐ์ ๋ํ ์นด์ดํ ๋ ์๋กญ๊ฒ ํด์ผํ๋ค๋ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ! - ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ visited[k] ๊ฐ์ด ํ์ฌ ํ์ํ๋ ๊ฒฝ๋ก์ ์๊ฐ๊ณผ ๊ฐ๋ค๋ฉด ๊ทธ๋๋ก cnt๋ฅผ ์ฆ๊ฐ์์ผ ์นด์ดํ ํ๋ค.
๐ก ํผ๋๋ฐฑ
- ๋ชจ๋ ์๋ฆฌ๋ง๋ค, ์๊ฐ์ ๊ฐ์๋ ๊ฒฝ๋ก๋ ๋ค๋ฅผ ์ ์๋ค๋ ์ ์ ์บ์นํด์ฃผ๋ฉด ๋๋ ๋ฌธ์ ์๋ค.
'2๏ธโฃ Java > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java Algorithm] ์ํ๋ฒณ BOJ #1987 (0) | 2022.08.16 |
---|---|
[Java Algorithm] ๋ ๋์ BOJ #16197 (0) | 2022.08.16 |
[Java Algorithm] ์ฌ์น์ฐ์ฐ ์ ํจ์ฑ ๊ฒ์ฌ SWEA #1233 (0) | 2022.08.11 |
[Java Algorithm] ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 4 BOJ #17406 (0) | 2022.08.10 |
[Java Algorithm] ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 2 BOJ #16927 (0) | 2022.08.10 |
๋๊ธ