Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 1914
  • 백준 1495
  • 백준 2343
  • 백준 15655
  • 백준 7567
  • 백준 2467
  • 백준 2591
  • 백준 12871
  • 백준 8892
  • 백준 12605
  • 백준 7662
  • 백준 6550
  • 백준 1011
  • 백준 10709
  • Java
  • 백준 16194
  • 백준 16926
  • 백준 1531
  • 백준 1747
  • 백준 24039
  • 백준 14582
  • 백준 2225
  • 백준 4659
  • 백준 3135
  • 백준 1064
  • 백준 15961
  • 자바
  • 백준
  • 백준 3049
  • 백준 15312
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 13549 숨바꼭질 3(Java)
백준

백준 13549 숨바꼭질 3(Java)

2023. 2. 28. 13:54

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

 

13549번: 숨바꼭질 3

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

www.acmicpc.net


 

Java 코드

 


import java.util.Scanner;
import java.util.Queue;
import java.util.LinkedList;
  
public class Main {

  static int[] arr = new int[100001];
  
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();
    int k = sc.nextInt();

    bfs(n, k);
  
    System.out.println(arr[k] - 1);
  }

  public static void bfs(int n, int k) {
    Queue<Integer> q = new LinkedList<>();
    arr[n] = 1;
    q.add(n);
    while(!q.isEmpty()) {
      int num = q.poll();
      if(num == k) break;

      if(num * 2 <= 100000 && arr[num * 2] == 0) {
        q.add(num * 2);
        arr[num * 2] = arr[num];
      }

      if(num - 1 >= 0 && arr[num - 1] == 0) {
        q.add(num - 1);
        arr[num - 1] = arr[num] + 1;
      }

      if(num + 1 <= 100000 && arr[num + 1] == 0) {
        q.add(num + 1);
        arr[num + 1] = arr[num] + 1;
      }
      
    }
  }
  
}

'백준' 카테고리의 다른 글

백준 12605 단어순서 뒤집기(Java)  (0) 2023.02.28
백준 7662 이중 우선순위 큐(Java)  (0) 2023.02.28
백준 1107 리모컨(Java)  (0) 2023.02.28
백준 2225 합분해(Java)  (0) 2023.02.27
백준 2294 동전 2(Java)  (0) 2023.02.27
    '백준' 카테고리의 다른 글
    • 백준 12605 단어순서 뒤집기(Java)
    • 백준 7662 이중 우선순위 큐(Java)
    • 백준 1107 리모컨(Java)
    • 백준 2225 합분해(Java)
    Park DJ
    Park DJ

    티스토리툴바