문제
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오.
input
5 17
output
4
import sys
n, k = map(int, sys.stdin.readline().split())
answer = 0
s = [n]
tmp = []
visited = [False] * 100001
if n != k:
while len(s) != 0:
for x in s:
if x + 1 == k or x - 1 == k or x * 2 == k:
tmp = []
break
if x + 1 <= 100000 and not visited[x + 1]:
visited[x + 1] = True
tmp.append(x + 1)
if x - 1 >= 0 and not visited[x - 1]:
visited[x - 1] = True
tmp.append(x - 1)
if x * 2 <= 100000 and not visited[x * 2]:
visited[x * 2] = True
tmp.append(x * 2)
s = tmp
tmp = []
answer += 1
print(answer)