ํ์ด
1์ฐจ์ ๋ฐฐ์ด์์์ BFS ๋ฌธ์ ์ด๋ค.
์์์ n ์์ k ์ ๋๋ฌํ ๋ ๊น์ง n ์ด [n+1, n-1, n*2]
์ด ์ธ๊ฐ์ง ๋ฐฉ์์ผ๋ก n ์ ์์ง์ผ ์ ์๋ค.
์ด ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ ๋ด์ ๋ค ๋ฐฉ๋ฌธํ ์ง์ ๋ง๋ค ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
BFS ๊ฐ ์ํ๋๋ฉด์ k ์ง์ ์ ๋๋ฌํ์ ๊ฒฝ์ฐ, BFS ๋ฅผ ์ข ๋ฃํ ๋ค ์ ์ฅํด๋๋ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ - 1 ์ ๊ฐ์ ๋ฐํํ๋ค.
์ฒ์์ ์ฝ๋๊ฐ ์๋์์ด ํ๋ฆฌ๊ธธ๋ ๋์ฒด ๋ญ๊ฐ ๋ฌธ์ ์ธ๊ฐ ์ถ์ด ํ์ฐธ์ ๊ณ ๋ฏผํ์๋๋ฐ ๋ฒ์ ๊ณ์ฐ์ ์คํ๊ฐ ์์์์ ์์๋ค.
ํญ์ ์คํ๋ฅผ ์ ํ์ธํด์ผ๊ฒ ๋ค.
์์ค์ฝ๋
# ์จ๋ฐ๊ผญ์ง
from collections import deque
import sys
input = sys.stdin.readline
def bfs(n):
q = deque()
q.append(n)
visited[n] = 1
while q:
x = q.popleft()
if x == k: # ๋ชฉํ์ ์ ๋๋ฌํ์ ๊ฒฝ์ฐ
return visited[x] - 1
dx = [x+1, x-1, x*2]
for nx in dx:
if 0 <= nx < 100001 and visited[nx] == 0: # ๋ฒ์ ๋ด ์ด๋ฉด์ ๋ฐฉ๋ฌธํ์ง ์์์ ๊ฒฝ์ฐ
visited[nx] = visited[x] + 1 # ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ ๊ฒธ ์ด ๊ณ์ฐ
q.append(nx)
visited = [0] * 100001
n, k = map(int, input().split())
print(bfs(n))