-
[백준] 1697 숨바꼭질 #JAVAAlgorithm Solving/BAEKJOON 2020. 12. 10. 08:52
BAEKJOON [1697] 숨바꼭질
코드
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.io.IOException; public class Main { public static void main(String[] args) throws IOException{ int n,k; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); n = Integer.parseInt(input.split(" ")[0]); k = Integer.parseInt(input.split(" ")[1]); int[] dist = new int[100001]; Queue<Integer> queue = new LinkedList<Integer>(); queue.add(n); while (! queue.isEmpty()) { int temp = queue.poll(); if(temp==k) { System.out.println(dist[temp]); return; } //1. 한칸이동 + if(temp+1 <100001 && dist[temp+1] == 0){ queue.add(temp+1); dist[temp+1] = dist[temp]+1; } //2. 한칸이동 - if(temp-1 >=0 && dist[temp-1] == 0){ queue.add(temp-1); dist[temp-1] = dist[temp]+1; } //3. 순간이동 2배이동 if(2*temp < 100001 && dist[2*temp] == 0){ queue.add(2*temp); dist[2*temp] = dist[temp]+1; } } } }
풀이
- BFS
- 수빈이가 움직일 수 있는 거리에 주의한다.
- 수빈이가 움직이는 거리(?)는 0 ≤ N ≤ 100,000 로 배열을 100,001 의 크기를 갖는다.
잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)
'Algorithm Solving > BAEKJOON' 카테고리의 다른 글
[백준] 2583 영역 구하기#JAVA (0) 2020.12.13 [백준] 1012 유기농배추 #JAVA (0) 2020.12.11 [백준] 4179 불 #JAVA (0) 2020.12.09 [백준] 7569 토마토#JAVA (0) 2020.12.06 [백준] 7576 토마토 #JAVA (0) 2020.12.05