DEV ℧ Developer Diary

[Silver1] No.01697 숨바꼭질

숨바꼭질

No.01697 숨바꼭질

문제

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다.

수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오.

문제풀이

저번 No.16953 A -> B 과 비슷한 유형의 문제이다.

이번 문제도 패턴을 찾아보자.

  1. X - 1
  2. X + 1
  3. X * 2

이렇게 패턴을 모두 넣어주고, Node에는 수빈이가 이동한 거리 n과 수빈이가 이동한 시간을 넣어준다.

BFS를 이용해 모든 경우의 수를 구해주고, 한번 방문한 거리는 재방문 하지 안도록 boolean[] visited로 체크해줍니다.

수빈이가 동생의 위치에 도착한 시간중 가장 작은 시간을 구해 result에 넣어준다.

풀이소스