~๋ชฉ์ฐจ~
๋ฌธ์
https://www.acmicpc.net/problem/13549
์์ฑ ์ฝ๋
import heapq
INF = int(1e9)
N, K = map(int, input().split()) # ์์ ์์น, ๋์ฐฉ ์์น
distance = [INF]*100001 # 100001๊ฐ์ ๋จ์ด์ง ๊ฑฐ๋ฆฌ
def dijkstra(start): # ๋ค์ต์คํธ๋ผ
distance[start] = 0 # ์์ ์์น ์ด๊ธฐํ
q = []
heapq.heappush(q, (0, start)) # ์์ ์์น ์ฐ์ ์์ ํ ์ฝ์
while q: # q์ ๊ฐ์ด ์์ ๋์
dist, now = heapq.heappop(q) # ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ๋
ธ๋
if distance[now] < dist:
continue
for a, b in [(now*2, dist), (now+1, dist+1), (now-1, dist+1)]: # 2๋ฐฐ, ์ค๋ฅธ์ชฝ, ์ผ์ชฝ
if 0 <= a <= 100000 and distance[a] > b: # ๋ฒ์ ์์ ์๊ณ ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด(๋ฒ์ ์ฃผ์)
distance[a] = b
heapq.heappush(q, (b, a))
dijkstra(N) # ์์ ์์น ๋ค์ต์คํธ๋ผ ์คํ
print(distance[K]) # ์์ ์์น๋ก๋ถํฐ K๊ฐ ๋จ์ด์ง ์ต์ ๊ฑฐ๋ฆฌ
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐
REFERENCE