https://www.acmicpc.net/problem/1697
from collections import deque
def bfs(queue, visited, k):
while queue:
position, time = queue.popleft()
# 정해진 범위를 벗어났을 때
if position < 0 or position > len(visited)-1 or visited[position]:
continue
visited[position] = True
# 동생과 만났을 때
if position == k:
return time
else:
queue.append((position-1, time+1))
queue.append((position+1, time+1))
queue.append((position*2, time+1))
n, k = list(map(int, input().split()))
visited = [False for _ in range(200000)]
queue = deque()
queue.append((n, 0))
print(bfs(queue, visited, k))
처음에 visited
리스트의 길이를 n, k 중에 더 큰 것의 길이로 해서 문제가 있었다. 넘어간 다음에 뒤로 오면서 찾을 때가 빠를 때도 있었기 때문이었다. 그래서 최대 가능한 범위의 두배로 길이를 잡고 했다. 정말 오랜만에 파이썬으로 푸니까 적응이 좀 안된다.