from collections import deque

def bfs():
    q = deque([n])
    while q:
        x = q.popleft()
        if x == k:
            return array[x]
        for nx in (x-1, x+1, 2*x):
            if 0 <= nx < MAX and not array[nx]:
                if nx == 2*x and x != 0:
                    array[nx] = array[x] 
                    q.appendleft(nx) # 2*X 가 더 높은 우선순위를 가지기 위함
                else:
                    array[nx] = array[x] + 1
                    q.append(nx)
    
MAX = 100001
n, k = map(int, input().split())
array = [0] * MAX
print(bfs())

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 16929 Two Dots (python)  (0) 2020.09.03
[BOJ] 10026 적록색약 (python)  (0) 2020.09.03
백준 #5052 전화번호목록 (Python)  (0) 2020.04.16
백준 #9251 LCS [Python]  (0) 2020.03.27
백준 #1655 가운데를 말해요 [Python]  (0) 2020.03.27

+ Recent posts