🐣 알고리즘 삐약/💻 백준 삐약

55 삐약 : 백준 1697| 숨바꼭질 [바킹독 문제 풀이|BFS|JAVA]

우주수첩 2024. 5. 24. 13:24
728x90

 

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

 

 

package BKD_0x9_BFS;

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 BOJ_1697 {
    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 K = Integer.parseInt(st.nextToken());

        int[] dist = new int[100001];

        Queue<Integer> q = new LinkedList<>();

        int count=0;

        q.offer(N);
        dist[N]=1;

        while(!q.isEmpty()){
            int idx = q.poll();

            if(idx==K) {
                count= dist[idx]-1;
                break;
            }
            if(idx-1>=0 && dist[idx-1]==0){
                dist[idx-1] = dist[idx]+1;
                q.offer(idx-1);
            }
            if(idx+1<=100000 && dist[idx+1]==0){
                dist[idx+1] = dist[idx]+1;
                q.offer(idx+1);
            }
            if(idx*2<=100000 && dist[2*idx]==0){
                dist[2*idx] = dist[idx]+1;
                q.offer(2*idx);
            }
        }

        System.out.println(count);
        br.close();


    }
}

 

 

 

 

입력 조건을 꼼꼼하게 보지 않고 마음대로 범위지정해서 실행했다가는 어메무시한 런타임 에러를 맞이하게 됩니당

out of boundary 뜨니까 꼭 주어진 입력 조건 안에서 실행하긔

 

그래도 저번에 bfs하나 풀고 해봤다고 자신감 붙어서 재미있게 문제 풀었던 것 같당

 

728x90