bong-u/til

백준 - 12851 : 숨바꼭질 2 (G4)

수정일 : 2024-11-15

 1from collections import deque
 2
 3position_a, position_b = map(int, input().split())
 4
 5q = deque()
 6visited = [False]*100001
 7result = 0
 8cnt = 1
 9
10q.append((0, position_a))
11while q:
12    time, cur = q.popleft();
13    visited[cur] = True
14
15    if cur == position_b:
16        result = time
17        for i in q:
18            if i == (time, cur):
19                cnt += 1
20        break
21    if cur-1 >= 0 and not visited[cur-1]:
22        q.append((time+1, cur-1))
23    if cur+1 <= 100000 and not visited[cur+1]:
24        q.append((time+1, cur+1))
25    if cur*2 <= 100000 and not visited[cur*2]:
26        q.append((time+1, cur*2))
27
28print (result)
29print (cnt)
  • 범위를 잘못정해서 2번 틀렸다
  • 100000 넘어갔다가 오는 게 빠른 경우가 있다고 생각할 수 있지만
  • 넘어가지 않고도 가장 빠른 방법에 도달할 수 있다
  • 쉽게 풀었던 편이었다