코딩테스트/백준

[Java] 백준 1697 : 숨바꼭질

플래시🦥 2023. 2. 2.
반응형

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

 

1697번: 숨바꼭질

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

www.acmicpc.net


 

 

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

public class Main {
	
	static int N,K;
	static int[] visit = new int[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(N);	
		}
		
		br.close();
	}// main()
	
	static void bfs(int num) {
		
		Queue<Integer> qu = new LinkedList<>();
		qu.add(num);
		visit[num]=1;
		
		while(!qu.isEmpty()) {
			int tmp=qu.poll();
			for(int i=0;i<3;i++) {
				int next;
				if(i==0) {
					next=tmp+1;
				}else if(i==1) {
					next=tmp-1;
				}else {
					next=tmp*2;
				}
				
				if(next==K) {
					System.out.println(visit[tmp]);
					return;
				}
				
				if (next >= 0 && next < visit.length && visit[next] == 0) {
                    qu.add(next);
                    visit[next] = visit[tmp] + 1;
                }
			}
		}
	}
	
}// class Main
728x90
반응형

댓글