728x90
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class BJ1697 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
boolean[] visited = new boolean[100001];
Queue<int[] > queue = new LinkedList<>();
queue.add(new int[]{N, 0});
visited[N] = true;
while (!queue.isEmpty()) {
int[] current = queue.poll();
int position = current[0];
int time = current[1];
if(position == K) {
System.out.println(time);
return;
}
int[] nextPositions = {position -1, position + 1,position * 2};
for(int next: nextPositions) {
if(next>=0 && next<=100000 && !visited[next]) {
queue.add(new int[]{next, time+1});
visited[next] = true;
}
}
}
sc.close();
}
}
처음에 while을 사용해서 if문으로 N과 K의 관계로 하였더니 무한루프에 빠지게 되어서 밑에 알고리즘 힌트를 보니까 너비우선탐색을 사용한다고 되어있어서 Queue로 문제를 해결하였다.
728x90
'백준' 카테고리의 다른 글
백준 14889 -Java (0) | 2024.12.03 |
---|---|
백준 2166 - Java (0) | 2024.11.27 |
백준 14500 - Java (0) | 2024.11.26 |
백준 1916 - Java (0) | 2024.11.25 |
백준 1991 - Java (0) | 2024.11.24 |