ํ’€์ด


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))

References