📌 고정 게시글

📢 공지합니다

이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.

최코딩의 개발

[백준 1967] 숨바꼭질 본문

코딩테스트/백준

[백준 1967] 숨바꼭질

seung_ho_choi.s 2024. 12. 22. 19:30
728x90

https://www.acmicpc.net/problem/1697

package graph;

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 Graph1697 {
    static int N;
    static int K;

    static boolean[] visit = new boolean[100001];

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

        N = Integer.parseInt(st.nextToken());
        K = Integer.parseInt(st.nextToken());
        if (N == K) {
            System.out.println(0);
        } else {
            bfs();
        }
    }

    private static void bfs() {
        int cnt = 0;
        Queue<Integer> queue = new LinkedList<>();
        int pre_N = N;
        queue.add(pre_N);
        while (!visit[K]) {
            int size = queue.size();
            for (int j = 0; j < size; j++) {
                int pre_N2 = queue.poll();
                for (int i = 0; i < 3; i++) {
                    if (i == 0) {
                        pre_N = pre_N2 - 1;
                    } else if (i == 1) {
                        pre_N = pre_N2 + 1;
                    } else {
                        pre_N = pre_N2 * 2;
                    }

                    if (pre_N >= 0 && pre_N <= 100000) {
                        if (!visit[pre_N]) {
                            visit[pre_N] = true;
                            queue.add(pre_N);
                        }
                    }
                }


            }

            cnt++;
        }
        System.out.println(cnt);
    }
}

 

골드문제 숨박꼭질 문제를 풀어서 그런지 매우 쉬웠다! 

핵심은 BFS로 모든 경우의 수를 구한 뒤 visit[]에다가 true를 한다. 그 후 visit[K]가 true 면 멈춘 다음 cnt를 출력시키면 끝이나는 간단한 문제이다.

728x90

'코딩테스트 > 백준' 카테고리의 다른 글

[백준 9465번] 스티커  (1) 2024.12.24
[백준 16928번] 뱀과 사다리 게임  (0) 2024.12.23
[백준 2304번] 창고 다각형  (0) 2024.12.22
[백준 11501번] 주식  (0) 2024.12.21
[백준 20006번] 랭킹전 대기열  (1) 2024.12.20