ποΈ Algorithm/π© λ°±μ€
π© [λ°±μ€] [Python] 13549λ²_μ¨λ°κΌμ§ 3
Dbswnstjd
2022. 12. 17. 08:56
λ¬Έμ
https://www.acmicpc.net/problem/13549
13549λ²: μ¨λ°κΌμ§ 3
μλΉμ΄λ λμκ³Ό μ¨λ°κΌμ§μ νκ³ μλ€. μλΉμ΄λ νμ¬ μ N(0 ≤ N ≤ 100,000)μ μκ³ , λμμ μ K(0 ≤ K ≤ 100,000)μ μλ€. μλΉμ΄λ κ±·κ±°λ μκ°μ΄λμ ν μ μλ€. λ§μ½, μλΉμ΄μ μμΉκ° XμΌ
www.acmicpc.net
νμ΄
# λ°±μ€ 13549λ² λ¬Έμ - μ¨λ°κΌμ§ 3
from collections import deque
# 0 - 1 bfs νμ
def bfs():
graph = [-1] * 100001
graph[n] = 0
queue = deque([n])
while queue:
target = queue.popleft()
# λμμ μμΉμ λλ¬νλ€λ©΄ 리ν΄
if target == k:
return graph[target]
# λ°λ³΅λ¬Έμ ν΅ν΄ 3κ°μ§ μ΄λμ κ²½μ°λ₯Ό νμΈ
for i in (target + 1, target - 1, target * 2):
# μ΄λνλ κ³³μ΄ λ²μ λ΄μ μκ³ μ΄λνμ§ μμλ€λ©΄ μ΄λ
if 0 <= i <= 100000 and graph[i] == -1:
# μκ°μ΄λμ΄λΌλ©΄
if i == target * 2:
graph[i] = graph[target] # 0μ΄ κ°±μ
queue.appendleft(i) # μκ°μ΄λμ΄κΈ°μ λ¨Όμ νμ
else:
graph[i] = graph[target] + 1
queue.append(i)
n, k = map(int, input().split())
print(bfs())