π§©λ¬Έμ ν΄μ
μλΉμ΄μ λμμ μΌμ§μ μμ μμΉνκ³ μλΉμ΄λ 1μ΄μ x-1, x+1, 2*x λ‘ μ΄λν μ μλ€. μλΉμ΄μ λμμ μμΉκ° μ£Όμ΄μ‘μ λ, μλΉμ΄κ° λμμ μ°Ύμ μ μλ κ°μ₯ λΉ λ₯Έ μκ°μ΄ λͺ μ΄ νμΈμ§ ꡬνλ νλ‘κ·Έλ¨μ μμ±νλ©΄ λλ€.
πνμ΄
BFSλ₯Ό μ¬μ©νμ¬ νμλ€.
λ°©λ¬Έμ 체ν¬νκΈ° μν visited 리μ€νΈλ₯Ό μμ±νμλ€.
νμ νμ¬ μμΉμ νμ¬ λμ μ΄λ₯Ό κ°μ΄ μ μ₯νμ¬, μ΄λ ν λλ§λ€ μ΄λ₯Ό λμ μμΌμ£Όμλ€.
μ΄λ κ°λ₯ μμΉλ arr 리μ€νΈλ‘ λ§λ€μ΄μ£Όμκ³ , arr μμ μ€ μμ§ λ°©λ¬Έ νμ§ μμκ³ , 0~100000 μ¬μ΄ κ°μ΄λΌλ©΄ λ°©λ¬Ένκ³ νμ μ½μ νμλ€.
κ·Έλ κ² νμ¬ kμ κ°μ κ°μ μ°ΎμΌλ©΄ νμ¬ λμ μ΄λ₯Ό μΆλ ₯νμλ€.
λ§μ½ μμλΆν° λμκ³Ό μλΉμ΄κ° κ°μ΄ μλ€λ©΄ μ΄λν νμ μκΈ°μ 0μ μΆλ ₯νλ€. κ·Έλ¦¬κ³ λμμ΄ μλΉμ΄λ³΄λ€ λ€μ μμΉνλ€λ©΄ λ€λ‘ 1μΉΈμ© μ΄λνλ λ°©λ² λ°μ μκ³ μ΄λμκ°μ n-kμ΄κΈ°μ BFS λλ¦¬μ§ μκ³ λ°λ‘ n-kλ₯Ό μΆλ ₯νμλ€.
μ κ³Όμ μ λμ³μ μ²μμ νλ Έμ΅λλ€ νμ μ λ°μλ€.
π» μ½λ
from collections import deque
def bfs(): # BFS μ μ
queue = deque()
queue.append((n, 0)) # μ²μ μλΉμ΄ μμΉμ λμ μ΄λ₯Ό μ½μ
visited[n] = True # μ²μ μλΉμ΄ μμΉ λ°©λ¬Έ μ²λ¦¬
while queue: # νκ° λΉλκΉμ§
c, cnt = queue.popleft()
if c == k: # λ§μ½ μ΄λ μμΉμ λμμμΉκ° κ°λ€λ©΄ μΉ΄μ΄νΈ μΆλ ₯
print(cnt)
break
else: # λ€λ₯΄λ€λ©΄ μ΄μ μ΄λν¨
arr = [c-1, c+1, 2*c] # μμΌλ‘ νμΉΈ, λ€λ‘ νμΉΈ, μκ°μ΄λ
for i in arr:
if 0 <= i <= 100000: # μ΄λλ²μ, νμμλ κ°μΌλ‘ νμκ°λ κ²μ μ€μ΄κΈ° μν ꡬ문
if not visited[i]: # λ°©λ¬Ένμ§ μμλ€λ©΄
visited[i] = True # λ°©λ¬Έ μ²λ¦¬νκ³
queue.append((i, cnt+1)) # νμ μ½μ
, 1μ΄ κ²½κ³Ό
n, k = map(int, input().split()) # μλΉμ΄ μμΉμ λμμμΉμ
λ ₯ λ°μ
visited = [False for i in range(100001)] # 방문체ν¬
if n == k: # μμλΆν° μλΉμ΄μ λμμ΄ κ°μ μμΉμ μλ€λ©΄ μμ§μ΄μ§ μμ
print(0)
elif n > k: # λμμ΄ μλΉμ΄λ³΄λ€ λ€μ μμΉνλ€λ©΄ νμνμμκ³ κ·Έλ₯ λ€λ‘ νμΉΈμ© μ΄λνλ©΄ λλ€. μκ°μ΄λμ λͺ»νλ€λ λ»
print(n-k)
else: # BFS ν¨μ νΈμΆ
bfs()
π λ¬Έμ λ§ν¬ : μ¨λ°κΌμ§
'Problem Solving > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 14494λ²: λ€μ΄λλ―Ήμ΄ λμμ? - νμ΄μ¬ (0) | 2022.06.05 |
---|---|
[λ°±μ€] 1012λ²: μ κΈ°λ λ°°μΆ - νμ΄μ¬ (0) | 2022.06.03 |
[λ°±μ€] 2775λ²: λΆλ νμ₯μ΄ λ ν μΌ - νμ΄μ¬ (0) | 2022.06.02 |
[λ°±μ€] 5014λ²: μ€ννΈλ§ν¬ - νμ΄μ¬ (0) | 2022.06.01 |
[λ°±μ€] 7562λ²: λμ΄νΈμ μ΄λ - νμ΄μ¬ (0) | 2022.05.31 |