본문 바로가기
Algorithm & SQL/BAEKJOON

백준 JAVA 1697 숨바꼭질

by YoonJong 2022. 7. 28.
728x90

 

package BAEKJOON.Silver.Ⅰ;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class NO1697_2 {

    static int n; //수빈위치
    static int k; //동생위치
    static boolean[] visit; //방문여부
    static int[] ch; //깊이(출력)
    static int[] dir = {-1, 1, 2}; // 움직일 수 있는 거리
    static Queue<Integer> Q = new LinkedList<>(); //BFS(최단거리)

    public static void BFS(int n, int k) {
        Q.offer(n);
        visit[n] = true;

        if (n == k) {
            System.out.println(0);
            return;
        }

        while (!Q.isEmpty()) {
            int cur = Q.poll();

            int nx = 0;
            // 움직일 수 있는거리
            for (int i = 0; i < 3; i++) {
                if (i == 2) {
                    nx = cur * dir[2];
                } else {
                    nx = cur + dir[i];
                }

                // 예외
                if (nx < 0 || nx > 100000) {
                    continue;
                }

                if (!visit[nx]) { //방문하지 않았으면 진행
                    Q.offer(nx); // Q 에 넣고
                    ch[nx] = ch[cur] + 1; // ch[계산값] = ch[현재값] + 1
                    visit[nx] = true; // 방문으로 변경

                    if (nx == k) { // 동생을 찾으면
                        System.out.println(ch[k]);
                        return;
                    }
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        n = sc.nextInt();
        k = sc.nextInt();
        visit = new boolean[100001];
        ch = new int[100001];

        BFS(n, k);
    }
}

 

 

난리났다 난리

728x90

'Algorithm & SQL > BAEKJOON' 카테고리의 다른 글

백준 JAVA 1927 최소 힙  (0) 2022.07.29
백준 JAVA 11279 최대 힙  (0) 2022.07.29
백준 JAVA 15650 N과 M(2)  (0) 2022.07.27
백준 JAVA 15651 N과 M(3)  (0) 2022.07.26
백준 JAVA 15649 N과 M(1)  (0) 2022.07.26

댓글