첫번 째줄에 순서대로 1차원에서의 시작 점과 도착 점이 주어짐
시작 점에서 도착 점까지 도달하는데 필요한 최소한의 거리를 출력
시작 점에서부터 도착 점까지의 최소 거리를 구하면 되기 때문에 큐를 활용하여 bfs 재귀
q = deque([[N, 0]])
visited = [0 for _ in range(100001)]
def bfs():
global M, q
while q:
top_ = q.popleft()
x, cnt = top_[0], top_[1]
if x == M: return cnt
if x < 0 or x > 100000: continue
if visited[x] == 0:
visited[x] = 1
if x == 0: q.append([x+1, cnt+1])
else:
q.append([x+1, cnt+1])
q.append([x*2, cnt+1])
q.append([x-1, cnt+1])
return -1
처음에는 큐를 배열로 선언하여 pop(0)으로 구현하였는데 처리 시간이 너무 많이 나왔다. 큐를 deque로 구현하여 처리 시간을 많이 단축 가능하였다.
큐는 deque로 구현하자.