취미처럼

[백준] 1697번 숨바꼭질 본문

Algorithm/백준

[백준] 1697번 숨바꼭질

sirius 2021. 3. 11. 10:11
https://www.acmicpc.net/problem/1697
 

1697번: 숨바꼭질

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

N과 K가 같을 경우의 처리를 해줘야 한다.

 

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

public class Main {

    static int N;
    static int K;
    static int[] visit = new int[100001];

    public static void main(String[] args) throws Exception {

        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        K = sc.nextInt();

        if (N == K) {
        	System.out.print(0);
        } else {
        	bfs();
        }
    }

    public static void bfs() {
        Queue<Integer> q = new LinkedList<>();
        q.offer(N);
        // 방문처리
        visit[N] = 1;
        while (!q.isEmpty()) {
        int num = q.poll();
        	for (int i = 0; i < 3; i++) {
                int next;
                if (i == 0) {
                    next = num + 1;
                } else if (i == 1) {
                    next = num - 1;
                } else {
                    next = num * 2;
                }

                if (next == K) {
                    System.out.println(visit[num]);
                    return;
                }
                // 범위 벗어나는지 체크, 방문여부 체크
                if(next >= 0 && next < visit.length && visit[next] == 0) {
                    q.offer(next);
                    visit[next] = visit[num] + 1;
                }

            }

        }
    }

}

'Algorithm > 백준' 카테고리의 다른 글

[백준] 14226번 이모티콘  (0) 2021.03.11
[백준] 13913번 숨바꼭질 4  (0) 2021.03.11
[백준] 7562번 나이트의 이동  (0) 2021.03.11
[백준] 7576번 토마토  (0) 2021.03.11
[백준] 2178번 미로 탐색  (0) 2021.03.11
Comments