본문 바로가기
항해

[DAY43] 99클럽 코딩테스트 JAVA 백준 숨바꼭질 1697번

by neVerThe1ess 2025. 1. 21.

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

 

 


🌕 최종코드

import java.io.*;
import java.util.*;
public class Main{ 
    static int subin;
    static int sister;
    static int result = Integer.MAX_VALUE;
    static int[] visited;
 
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        
        subin = Integer.parseInt(st.nextToken());
        sister = Integer.parseInt(st.nextToken()); 
        
        if(subin == sister)
        {
            System.out.println(0);
            return;
        }
        
        visited = new int[100001];

        System.out.println(BFS(subin));
        
     }
     
     public static int BFS(int n)
     {
        Queue<Integer> que = new LinkedList<>();
        que.add(n);

        visited[n] = 1;
        
        while(!que.isEmpty())
        {
            int x = que.remove();
          
            if(x == sister)
            {                
                return visited[x]-1;                       
            }

            if(2*x<=100000 && visited[2*x] == 0)
            {
                que.add(2*x);
                visited[2*x] = visited[x]+1;   
            }

            //뒤로 걷기
            if(x-1 >= 0 && visited[x-1] == 0)
            {
                que.add(x-1);
                visited[x-1] = visited[x]+1;   
            }
             
            //앞으로 걷기
            if(x+1<=100000 && visited[x+1] == 0)
            {
                que.add(x+1);
                visited[x+1] = visited[x]+1;   
            }
                 
        }

        return 0;
     }     

}