1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [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์ถ”๊ฐ€ )


๋ญ”๊ฐ€ ์ž๊พธ ๋ฌธ์ œ๋ฅผ ์–ด๋ ต๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹คโ€ฆ ์ฒœ์ฒœํžˆ ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•˜์ž !

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: