๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 16928 ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„

by ๐ŸŠ๊ทค๐ŸŠ 2024. 9. 7.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/16928

  • ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„์„ ์ฆ๊ฒจ ํ•˜๋Š” ํ๋ธŒ๋Ÿฌ๋ฒ„๋Š” ์–ด๋А ๋‚  ๊ถ๊ธˆํ•œ ์ ์ด ์ƒ๊ฒผ๋‹ค.
    • ์ฃผ์‚ฌ์œ„๋ฅผ ์กฐ์ž‘ํ•ด ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ˆ˜๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์ตœ์†Œ ๋ช‡ ๋ฒˆ๋งŒ์— ๋„์ฐฉ์ ์— ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?
  • ๊ฒŒ์ž„์€ ์ •์œก๋ฉด์ฒด ์ฃผ์‚ฌ์œ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ฃผ์‚ฌ์œ„์˜ ๊ฐ ๋ฉด์—๋Š” 1๋ถ€ํ„ฐ 6๊นŒ์ง€ ์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ์ ํ˜€์žˆ๋‹ค.
  • ๊ฒŒ์ž„์€ ํฌ๊ธฐ๊ฐ€ 10×10์ด๊ณ , ์ด 100๊ฐœ์˜ ์นธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” ๋ณด๋“œํŒ์—์„œ ์ง„ํ–‰๋œ๋‹ค. ๋ณด๋“œํŒ์—๋Š” 1๋ถ€ํ„ฐ 100๊นŒ์ง€ ์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์ ํ˜€์ ธ ์žˆ๋‹ค.
  • ํ”Œ๋ ˆ์ด์–ด๋Š” ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค ๋‚˜์˜จ ์ˆ˜๋งŒํผ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”Œ๋ ˆ์ด์–ด๊ฐ€ i๋ฒˆ ์นธ์— ์žˆ๊ณ , ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค ๋‚˜์˜จ ์ˆ˜๊ฐ€ 4๋ผ๋ฉด, i+4๋ฒˆ ์นธ์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋งŒ์•ฝ ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ฆฐ ๊ฒฐ๊ณผ๊ฐ€ 100๋ฒˆ ์นธ์„ ๋„˜์–ด๊ฐ„๋‹ค๋ฉด ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋„์ฐฉํ•œ ์นธ์ด ์‚ฌ๋‹ค๋ฆฌ๋ฉด, ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ํƒ€๊ณ  ์œ„๋กœ ์˜ฌ๋ผ๊ฐ„๋‹ค. ๋ฑ€์ด ์žˆ๋Š” ์นธ์— ๋„์ฐฉํ•˜๋ฉด, ๋ฑ€์„ ๋”ฐ๋ผ์„œ ๋‚ด๋ ค๊ฐ€๊ฒŒ ๋œ๋‹ค.
  • ์ฆ‰, ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์ด๋™ํ•œ ์นธ์˜ ๋ฒˆํ˜ธ๋Š” ์›๋ž˜ ์žˆ๋˜ ์นธ์˜ ๋ฒˆํ˜ธ๋ณด๋‹ค ํฌ๊ณ , ๋ฑ€์„ ์ด์šฉํ•ด ์ด๋™ํ•œ ์นธ์˜ ๋ฒˆํ˜ธ๋Š” ์›๋ž˜ ์žˆ๋˜ ์นธ์˜ ๋ฒˆํ˜ธ๋ณด๋‹ค ์ž‘์•„์ง„๋‹ค.
  • ๊ฒŒ์ž„์˜ ๋ชฉํ‘œ๋Š” 1๋ฒˆ ์นธ์—์„œ ์‹œ์ž‘ํ•ด์„œ 100๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ๊ฒŒ์ž„ํŒ์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, 100๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ ค์•ผ ํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด๋ณด์ž.
  • ์ฒซ์งธ ์ค„์— ๊ฒŒ์ž„ํŒ์— ์žˆ๋Š” ์‚ฌ๋‹ค๋ฆฌ์˜ ์ˆ˜ N(1 ≤ N ≤ 15)๊ณผ ๋ฑ€์˜ ์ˆ˜ M(1 ≤ M ≤ 15)์ด ์ฃผ์–ด์ง„๋‹ค.
  • ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์‚ฌ๋‹ค๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์˜๋ฏธํ•˜๋Š” x, y (x < y)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. x๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๋ฉด, y๋ฒˆ ์นธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
  • ๋‹ค์Œ M๊ฐœ์˜ ์ค„์—๋Š” ๋ฑ€์˜ ์ •๋ณด๋ฅผ ์˜๋ฏธํ•˜๋Š” u, v (u > v)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. u๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๋ฉด, v๋ฒˆ ์นธ์œผ๋กœ ์ด๋™ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
  • 1๋ฒˆ ์นธ๊ณผ 100๋ฒˆ ์นธ์€ ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ์˜ ์‹œ์ž‘ ๋˜๋Š” ๋์ด ์•„๋‹ˆ๋‹ค. ๋ชจ๋“  ์นธ์€ ์ตœ๋Œ€ ํ•˜๋‚˜์˜ ์‚ฌ๋‹ค๋ฆฌ ๋˜๋Š” ๋ฑ€์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋™์‹œ์— ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค. ํ•ญ์ƒ 100๋ฒˆ ์นธ์— ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž…๋ ฅ๋งŒ ์ฃผ์–ด์ง„๋‹ค.
  • 100๋ฒˆ ์นธ์— ๋„์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์‚ฌ์œ„๋ฅผ ์ตœ์†Œ ๋ช‡ ๋ฒˆ ๊ตด๋ ค์•ผ ํ•˜๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

์•„์ด๋””์–ด

  • ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ BFS๋ฅผ ์จ์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
  • ์šฐ์„  ๊ฐ๊ฐ์˜ HashMap์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ๋‹ค๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ๊ฐ’๊ณผ ๋„์ฐฉ์ง€์ ์„ key์™€ value๊ฐ’์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๋ฑ€์ด ์žˆ๋Š” ๋…ธ๋“œ๊ฐ’๊ณผ ๋„์ฐฉ์ง€์ ๋„ ์‚ฌ๋‹ค๋ฆฌ์ฒ˜๋Ÿผ ์ €์žฅ์„ ํ•ด์ฃผ์—ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  BFS๋ฅผ ๋Œ๋ฆฌ๋Š”๋ฐ ์‹œ์ž‘์ ์ด 1์ด๋ผ๊ณ  ํ–ˆ์œผ๋‹ˆ, 1์„ ๋จผ์ € Queue์— ๋„ฃ๊ณ  while๋ฌธ์— ๋“ค์–ด๊ฐ„๋‹ค.
  • ์ฃผ์‚ฌ์œ„๋Š” 1๋ถ€ํ„ฐ 6๊นŒ์ง€ ์žˆ์œผ๋‹ˆ, 1๋ถ€ํ„ฐ 6๊นŒ์ง€ for๋ฌธ์„ ๋„๋Š”๋ฐ ๊ธฐ์ค€ ๋…ธ๋“œ๊ฐ’์—์„œ ์ฃผ์‚ฌ์œ„ ๊ฐ’์„ ๋”ํ•œ ๊ฐ’์ด 100์„ ๋„˜์–ด๊ฐ€๋ฉด continue๋ฅผ ํ•˜๊ณ , ๋„˜์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ด๋‹น ๋…ธ๋“œ๊ฐ€ ์‚ฌ๋‹ค๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ์ธ์ง€ ๋ฑ€์ด ์žˆ๋Š” ๋…ธ๋“œ์ธ์ง€, ์ผ๋ฐ˜ ๋…ธ๋“œ์ธ์ง€ ํŒ๋‹จํ•œ๋‹ค.
  • ๋งŒ์•ฝ ์‚ฌ๋‹ค๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ๋ผ๋ฉด ์šฐ์„  ๋ณ€์ˆ˜ ํ•˜๋‚˜์— ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ„ ๊ธฐ์กด ๋ฐฐ์—ด๊ฐ’์„ ์ €์žฅํ•ด์ฃผ๊ณ  ๊ธฐ์ค€ ๋…ธ๋“œ์—์„œ 1๋”ํ•œ ๊ฐ’๊ณผ ์˜ฌ๋ผ๊ฐ„ ๋…ธ๋“œ์˜ ์›๋ž˜ ๋ฐฐ์—ด๊ฐ’ ์ค‘ ๋” ์ž‘์€ ๊ฐ’์„ ์ด๋™ํ•œ ๋…ธ๋“œ์˜ ๋ฐฐ์—ด๊ฐ’์— ์ €์žฅํ•ด์ค€๋‹ค. (๊ธฐ์ค€ ๋…ธ๋“œ == for๋ฌธ์— ๋“ค์–ด์˜ค๊ธฐ์ „์— Queue์—์„œ ๋บ๋˜ ๊ฐ’)
  • ์œ„์—์„œ ๋ณ€์ˆ˜์— ์ €์žฅํ•ด ๋†จ๋˜ ๊ธฐ์กด ๋ฐฐ์—ด๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์œผ๋กœ ๋‹ค์‹œ ์ €์žฅํ•œ ๋ฐฐ์—ด๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ์ตœ์†Ÿ๊ฐ’์ด ๊ฐฑ์‹ ์ด ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ ๋„˜์–ด๊ฐ€๊ณ  ๋งŒ์•ฝ ๋‹ค๋ฅด๋‹ค๋ฉด ๋” ์ ์€ ํšŸ์ˆ˜๋กœ ๊ฐ€๋Š” ๋ฃจํŠธ๊ฐ€ ์žˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ Queue์— ํ•ด๋‹น ๋…ธ๋“œ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.
  • ๋ฑ€๊ณผ ์ผ๋ฐ˜๋…ธ๋“œ๋„ ์‚ฌ๋‹ค๋ฆฌ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ณ„์‚ฐํ•ด์„œ ์ €์žฅํ•ด์ค€๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด์—๋Š” ๊ฐ ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ์ตœ์†Ÿ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฐฐ์—ด์˜ 100๋ฒˆ์งธ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • ์ฒ˜์Œ์— ์–ด๋–ค์‹์œผ๋กœ ํ’€์–ด์•ผ๋˜๋Š”์ง€ ๊ฐ์ด ์•ˆ์™€์„œ ์กฐ๊ธˆ ๊ณ ๋ฏผ์„ ํ–ˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค (๊ทธ๋ž˜์„œ ์•ฝ๊ฐ„ ํ’€๊ธฐ ์‹ซ์—ˆ๋‹ค...ใ…Ž)
  • ๋ฌธ์ œ๋ฅผ ๊ณ„์† ์ฝ๋‹ค๋ณด๋‹ˆ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ธ๊ฒƒ ๊ฐ™์•„์„œ BFS๋ฅผ ์จ์•ผ๊ฒ ๋‹ค๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , ํ’€๋‹ค๋ณด๋‹ˆ ์•ฝ๊ฐ„ dp๋А๋‚Œ๋„ ๋‚˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค...ใ…Žใ…Ž
  • ์ฒ˜์Œ์— ํ•œ๋ฒˆ ํ‹€๋ ธ๋Š”๋ฐ ๋ฑ€์ด ์žˆ๋Š” ๋…ธ๋“œ๋Š” ๊ตณ์ด ๊ฐˆ ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ continue๋กœ ๊ฑด๋„ˆ๋›ฐ์–ด์„œ ํ•ด๋‹น ๋…ธ๋“œ๊ฐ’์ด ๊ณ„์‚ฐ์ด ์•ˆ๋ผ์„œ ํ‹€๋ ธ๋˜๊ฑฐ์˜€๋‹ค... (๋ฑ€์„ ํƒ€์•ผ ์ตœ์†Ÿ๊ฐ’์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋‹ค...ใ… ใ… )

์˜ค๋žœ๋งŒ์— ์ข€ ์–ด๋ ต๊ฒŒ ํ‘ผ ๋ฌธ์ œ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค..! (๋‚˜๋ฆ„ ํ’€๊ณ ๋‚˜๋‹ˆ๊นŒ ๋ฟŒ๋“ฏํ•ด์„œ ์ข‹๋‹ค!)

์ฝ”๋“œ

import javax.swing.*;
import java.io.*;
import java.util.*;

public class BOJ16928 {

    static int N;
    static int M;
    static int map[];
    static HashMap<Integer, Integer> up;
    static HashMap<Integer, Integer> down;

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());

        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());

        // ๊ธธ๊ฐ€๋Š” ํšŸ์ˆ˜ ์ €์žฅํ•  ๋ฐฐ์—ด
        map = new int[101];
        // ๋ฐฐ์—ด์„ ์ •์ˆ˜์˜ ์ œ์ผ ํฐ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”
        Arrays.fill(map, Integer.MAX_VALUE);
        // ์‚ฌ๋‹ค๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ์™€ ๋„์ฐฉ์ง€ ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•  Hashmap
        up = new HashMap<>();
        // ๋ฑ€์ด ์žˆ๋Š” ๋…ธ๋“œ์™€ ๋„์ฐฉ์ง€ ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•  Hashmap
        down = new HashMap<>();

        // ์‚ฌ๋‹ค๋ฆฌ ์œ„์น˜ ์ •๋ณด ์ €์žฅ
        for(int i = 0; i < N; i++){
            StringTokenizer st2 = new StringTokenizer(br.readLine());

            int k = Integer.parseInt(st2.nextToken());
            int v = Integer.parseInt(st2.nextToken());

            up.put(k, v);
        }

        // ๋ฑ€ ์œ„์น˜ ์ •๋ณด ์ €์žฅ
        for(int i = 0; i < M; i++){
            StringTokenizer st3 = new StringTokenizer(br.readLine());

            int k = Integer.parseInt(st3.nextToken());
            int v = Integer.parseInt(st3.nextToken());

            down.put(k, v);
        }

        BFS(1);

        // 100๊นŒ์ง€ ๊ฐˆ ๋•Œ, ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅ
        System.out.println(map[100]);
    }

    public static void BFS(int x){
        Queue<Integer> q = new LinkedList<>();

        // ์‹œ์ž‘์ง€์ ์„ Queue์— ๋„ฃ์Œ
        q.offer(x);

        // ์‹œ์ž‘์ง€์ ์ผ ๋•Œ, ํšŸ์ˆ˜๊ฐ€ ์•„์ง 0์ด๋ฏ€๋กœ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
        map[x] = 0;

        // Queue๊ฐ€ ๋นŒ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
        while(!q.isEmpty()){
            int xx = q.poll();

            // ์ฃผ์‚ฌ์œ„ 1 ~ 6์ด๊ธฐ ๋•Œ๋ฌธ์— 1๋ถ€ํ„ฐ 6๊นŒ์ง€ ๋ฐ˜๋ณต
            for(int i = 1; i <= 6; i++){
                int nx = xx + i;

                // ์ด๋™ํ•œ ์ขŒํ‘œ๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด continue
                if(nx >= 101){
                    continue;
                }

                // ์˜ฌ๋ผ๊ฐ€๋Š” ์‚ฌ๋‹ค๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ๋ผ๋ฉด
                if(up.containsKey(nx)){
                    // ์‚ฌ๋‹ค๋ฆฌ ํƒ€๊ณ  ๋„์ฐฉํ•œ ๋…ธ๋“œ์˜ ๊ฐ’
                    int v = up.get(nx);

                    // ๊ธฐ์กด ๋ฐฐ์—ด ๊ฐ’
                    int origin = map[v];

                    // ํ•ด๋‹น ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ„ ๋…ธ๋“œ๊ฐ’์˜ ๊ธฐ์กด ๊ฐ’๊ณผ
                    // ๊ธฐ์กด ๋…ธ๋“œ +1 ๊ฐ’์„ ๋น„๊ตํ•ด์„œ ๋” ์ž‘์€ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ 
                    map[v] = Math.min(map[v], map[xx] + 1);

                    // ๋งŒ์•ฝ ํ•ด๋‹น ๋ฐฐ์—ด๊ฐ’์ด ๊ฐฑ์‹  ๋˜์—ˆ๋‹ค๋ฉด
                    // ๋” ์ตœ์†Ÿ๊ฐ’ ๋ฃจํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ
                    if(origin != map[v]){
                        // Queue์— ๋„ฃ์–ด์คŒ
                        q.offer(v);
                    }
                }
                // ๋งŒ์•ฝ ๋‚ด๋ ค๊ฐ€๋Š” ๋ฑ€์ด ์žˆ๋Š” ๋…ธ๋“œ๋ผ๋ฉด
                else if(down.containsKey(nx)){
                    // ๋ฑ€์„ ํƒ€๊ณ  ๋„์ฐฉํ•œ ๋…ธ๋“œ์˜ ๊ฐ’
                    int v = down.get(nx);

                    // ๊ธฐ์กด ๋ฐฐ์—ด ๊ฐ’
                    int origin = map[v];

                    // ํ•ด๋‹น ๋ฑ€์„ ํƒ€๊ณ  ๋‚ด๋ ค๊ฐ„ ๋…ธ๋“œ๊ฐ’์˜ ๊ธฐ์กด ๊ฐ’๊ณผ
                    // ๊ธฐ์กด ๋…ธ๋“œ +1 ๊ฐ’์„ ๋น„๊ตํ•ด์„œ ๋” ์ž‘์€ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ 
                    map[v] = Math.min(map[v], map[xx] + 1);

                    // ๋งŒ์•ฝ ํ•ด๋‹น ๋ฐฐ์—ด๊ฐ’์ด ๊ฐฑ์‹  ๋˜์—ˆ๋‹ค๋ฉด
                    // ๋” ์ตœ์†Ÿ๊ฐ’ ๋ฃจํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ
                    if(origin != map[v]){
                        // Queue์— ๋„ฃ์–ด์คŒ
                        q.offer(v);
                    }
                }
                // ๋งŒ์•ฝ ๋‘˜๋‹ค ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋ƒฅ ๊ธฐ์กด ๋…ธ๋“œ์— +1 ๊ฐ’์„ ์ €์žฅํ•˜๊ณ 
                else{
                    // ๊ธฐ์กด ๋ฐฐ์—ด ๊ฐ’
                    int origin = map[nx];

                    // ํ•ด๋‹น ๋…ธ๋“œ์˜ ๊ธฐ์กด ๊ฐ’๊ณผ
                    // ๊ธฐ์กด ๋…ธ๋“œ +1 ๊ฐ’์„ ๋น„๊ตํ•ด์„œ ๋” ์ž‘์€ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ 
                    map[nx] = Math.min(map[nx], map[xx] + 1);

                    // ๋งŒ์•ฝ ํ•ด๋‹น ๋ฐฐ์—ด๊ฐ’์ด ๊ฐฑ์‹  ๋˜์—ˆ๋‹ค๋ฉด
                    // ๋” ์ตœ์†Ÿ๊ฐ’ ๋ฃจํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ
                    if(origin != map[nx]){
                        // Queue์— ๋„ฃ์–ด์คŒ
                        q.offer(nx);
                    }
                }
            }
        }
    }
}