백준 - 뱀과 사다리 게임(java)

응큼한포도·2024년 5월 19일
0

코딩테스트

목록 보기
27/31
import java.io.*;
import java.util.*;

class Main {
    static int min = Integer.MAX_VALUE;
    static boolean[] visited;
    static HashMap<Integer, Integer> hash;
    static Queue<Where> que;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        
        hash = new HashMap<>();
        que = new LinkedList<>();
        visited = new boolean[101];

        for (int i = 0; i < M + N; i++) {
            st = new StringTokenizer(br.readLine());
            int key = Integer.parseInt(st.nextToken());
            int value = Integer.parseInt(st.nextToken());
            hash.put(key, value);
        }
        
        que.add(new Where(1, 0));
        visited[1] = true;
        
        bfs();
        System.out.println(min);
    }

    public static void bfs() {
        while (!que.isEmpty()) {
            Where where = que.poll();
            int now = where.now;
            int num = where.num;
            
            if (now == 100) {
                min = Math.min(min, num);
                return;
            }

            for (int i = 1; i <= 6; i++) {
                int next = now + i;
                if (next > 100 || visited[next]) {
                    continue;
                }

                if (hash.containsKey(next)) {
                    next = hash.get(next);
                }

                que.add(new Where(next, num + 1));
                visited[next] = true;
            }
        }
    }

    static class Where {
        int now;
        int num;
        
        public Where(int now, int num) {
            this.now = now;
            this.num = num;
        }
    }
}

백준 - 토마토 문제와 같이 정보를 저장하는 객체를 만들어주고 bfs를 실행할 때 객체 정보를 이용해 조건문을 만들어준다.

hash맵으로 이동해주는 조건 체크해서 큐에 넣으면 해결

profile
미친 취준생

0개의 댓글