BOJ_G5_16928
๐ [G5_16928] ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์
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 {
static int N, M, res;
static int[] map;
static int[] cnt;
static boolean[] v;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
// **** input start ****
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
map = new int[101];
v = new boolean[101];
cnt = new int[101];
for (int i = 0; i < N + M; i++) {
st = new StringTokenizer(br.readLine(), " ");
int start = Integer.parseInt(st.nextToken());
int end = Integer.parseInt(st.nextToken());
// ์ด์ฐจํผ ์ฌ๋ค๋ฆฌ , ๋ฑ ์ด๋ํ๋ ๊ฒ์ ๊ฐ๋ค
map[start] = end;
}
// **** input end ****
bfs();
System.out.println(res);
} // main end
// bfs
static void bfs() {
Queue<Integer> queue = new LinkedList<Integer>();
queue.add(1);
// ์นด์ดํ
, ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
cnt[1] = 0;
v[1] = true;
while(!queue.isEmpty()) {
int cur = queue.poll();
if(cur == 100) {
res = cnt[cur];
break;
}
// ์ฃผ์ฌ์ ๋์ง๊ธฐ
for(int i=1; i<=6; i++) {
int next = cur + i;
// 100์ ๋๊ฑฐ๋ ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๊ฒฝ์ฐ ํต๊ณผ
if(next > 100 || v[next]) continue;
// ์ด๋ํ ๊ฑฐ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ( ์ฌ๋ค๋ฆฌ ์๋๋ฉด ๋ฑ )
if(map[next] != 0) {
// ๋์ฐฉํ๋ ๊ณณ์ด ๋ฐฉ๋ฌธํ์ง ์์ ๊ฒฝ์ฐ
if(!v[map[next]]) {
// ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
v[map[next]] = true;
// ์นด์ดํ
cnt[map[next]] = cnt[cur] +1;
queue.add(map[next]);
}
}
// ์ด๋ํ ๊ฑฐ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ
else {
// ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
v[next] = true;
cnt[next] = cnt[cur] + 1;
queue.add(next);
}
}
}
}
} // class end
๐ค ๋์ ์๊ฐ
์ฒ์์ ๋ฑ๊ณผ ๋ง๋๋ ๊ฒ์ ๋ฌด์กฐ๊ฑด ์๋๋ค ๋ผ๊ณ ์๊ฐํด์ dfs๋ฅผ ํตํด ๋ฑ์ ๋ง๋๋ฉด ๋์๊ฐ๋ ํ์์ผ๋ก ํ๋๋ฐ ๋ต์ด ์๋์ค๊ธธ๋ ์ฐพ์๋ณด๋ ๋ฑ์ด ๊ฑฐ์ณ์๋ ์ต์ ๊ฒฝ๋ก๊ฐ ์กด์ฌํด์ ํ๋ฆฐ ๊ฒ์ด์๋ค..
ํ๋ง๋๋ก ๋ฌธ์ ์ ๊ทผ์ด ์๋ชป๋..
๊ทธ๋์ ์ฐพ์๋ณด๋ bfs์ dp๋ฅผ ํ์ฉํด ํ์ด๋๋ค. ์นด์ดํ
์ ๋ฐฐ์ด๋ก ํ์ฌ ์ ์ฅํด์ฃผ๋ ๊ฒ์ด ๋๋ ์๊ฐํ์ง ๋ชปํ ๋ฐฉ๋ฒ์ด๋ค..
- ์ ์ฒด ์ขํ, ๋ฐฉ๋ฌธ์ฒ๋ฆฌ ๋ฐฐ์ด, ์นด์ดํ ๋ฐฐ์ด์ ์์ฑํ๋ค.
- bfs๋ฅผ ํ์ฉํ์ฌ queue์์ poll ํ ๊ฒ์ด 100์ด ๋๋ฉด ๋๋ธ๋ค.
- ์ฃผ์ฌ์๋ฅผ ๋ค ๋์ง๋ฉด์ 100์ ๋๊ฑฐ๋ ๋ฐฉ๋ฌธํ ๊ฒฝ์ฐ ํต๊ณผ
- ๋ง์ฝ ์ฌ๋ค๋ฆฌ๋ ๋ฑ์ด ์๋ ๊ณณ์ผ ๊ฒฝ์ฐ ๋ค์ ๊ฐ๋ ๊ณณ์ ๋ฐฉ๋ฌธํ์ง ์์์ผ๋ฉด ๋ค์ ๊ฐ๋ ๊ณณ์ queue์ add ํ๋ค.
- ๋ง์ฝ ์ด๋ํ ๊ณณ์ด ์๋ ๊ฒฝ์ฐ ๊ณ์ ๋ํด์ค๋ค. ์นด์ดํ ๋ฐฐ์ด์ ๊ฐฑ์ ํด ์ฃผ๋ฉด์ ( ํ ๋ฒ ๋ฐ๋๋๋ง๋ค 1์ถ๊ฐ )
๋ญ๊ฐ ์๊พธ ๋ฌธ์ ๋ฅผ ์ด๋ ต๊ฒ ์๊ฐํ๋ ๊ฒ ๊ฐ๋คโฆ ์ฒ์ฒํ ์ฝ๊ฒ ์๊ฐํ์ !