https://www.acmicpc.net/problem/13549
from collections import deque
N,K = map(int,input().split())
dx = [2,-1,1]
visited = [0] * 100001
def bfs(N,K):
if N==K:
return 0
q = deque([(N, 0)])
while q:
cur_x,time = q.popleft()
for i in range(3):
if i == 0:
nx = cur_x * dx[0]
else:
nx = cur_x + dx[i]
if 0<=nx<100001 and visited[nx]==0:
visited[nx]=True
if i == 0:
q.append((nx,time))
if nx == K:
return time
else:
q.append((nx,time+1))
if nx == K:
return time+1
print(bfs(N,K))
N과 K가 같을 때 조건을 생각하지 못해 오답이 발생하였다.
이 조건만 생각한다면 쉽게 풀 수 있는 것 같다.