백준

백준 1697 - Java

으엉어엉 2024. 12. 15. 18:33
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