https://www.acmicpc.net/problem/13549
골드 5
푼 시간 : 50분
import sys, heapq
N, K = map(int, input().split())
check = [int(1e9)] * 100001
check[N] = 0
heap = []
heapq.heappush(heap, (0, N))
while heap:
move, idx = heapq.heappop(heap)
if check[K] != int(1e9):
break
for value in [idx*2, idx-1, idx+1]:
if 0 <= value < 100001:
if check[value] == int(1e9) and idx*2 == value:
heapq.heappush(heap, (move, value))
check[value] = move
elif check[value] == int(1e9):
heapq.heappush(heap, (move+1, value))
check[value] = move+1
print(check[K])
heap을 사용하면 무조건 최단시간을 구할 수 있으므로 check[value] == int(1e9)로 체크를 해야 한다.
이런 조건문 하나하나의 차이로 시간초과를 일으킬 수 있다는 걸 안 문제
꼭 다시 풀기!!