첫 시도, 잘못된 코드
from collections import deque
current, target = map(int, input().split())
if current >= target:
print(current - target)
else:
queue = deque([(current, 0)])
while queue:
current, moving_time = queue.popleft()
if current == target:
print(moving_time)
break
elif current > target:
queue.append((current-1, moving_time+1))
else:
if 0 <= current*2 <= 100000:
queue.append((current*2, moving_time+1))
if 0 <= current+1 <= 100000:
queue.append((current+1, moving_time+1))
if 0 <= current-1 <= 100000:
queue.append((current-1, moving_time+1))

수정된 코드
from collections import deque
current, target = map(int, input().split())
if current >= target:
print(current - target)
else:
queue = deque([(current, 0)])
visited_num_set = set([current])
while queue:
current, time_cost = queue.popleft()
if current == target:
print(time_cost)
break
elif current > target:
if current-1 not in visited_num_set:
queue.append((current-1, time_cost+1))
visited_num_set.add(current-1)
else:
if 0 <= current*2 <= 100000 and current*2 not in visited_num_set:
queue.append((current*2, time_cost+1))
visited_num_set.add(current*2)
if 0 <= current+1 <= 100000 and current+1 not in visited_num_set:
queue.append((current+1, time_cost+1))
visited_num_set.add(current+1)
if 0 <= current-1 <= 100000 and current-1 not in visited_num_set:
queue.append((current-1, time_cost+1))
visited_num_set.add(current-1)
