문제 풀이 및 개발 공간

[백준] 16928번 뱀과 사다리 게임 (gold 5 본문

백준공부/java

[백준] 16928번 뱀과 사다리 게임 (gold 5

gomduri43 2023. 9. 17. 17:42

import java.io.*;
import java.util.*;

class Point{
    int x;
    int n;
    public Point(int x , int n){
        this.x=x;
        this.n=n;
    }
}
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));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.valueOf(st.nextToken());
        int m=Integer.valueOf(st.nextToken());

        HashMap<Integer , Integer > dict=new HashMap<>();

        for(int i=0; i<n+m; i++){
            st=new StringTokenizer(br.readLine());
            dict.put(Integer.valueOf(st.nextToken()) , Integer.valueOf(st.nextToken()));
        }

        boolean[] visit=new boolean[101];

        Queue<Point> que=new LinkedList<>();
        que.offer(new Point(1,0));
        int answer=0;

        while(!que.isEmpty()){
            Point temp=que.poll();
            if(temp.x==100){
                answer=temp.n;
                break;
            }
            for(int i=1; i<=6; i++){
                int tx=temp.x+i;
                tx= dict.get(tx)==null ? tx : dict.get(tx);

                if(tx>100 || visit[tx]==true){
                    continue;
                }
                visit[tx]=true;
                que.offer(new Point(tx,temp.n+1));
            }
        }
        bw.write(answer+"");
        bw.flush();
    }
}