AβB(λ°±μ€ 16953λ²)
π‘ **Check Point !
(Β ν΄λΉμ¬νΒ β체ν¬Β )
λ§ν μμ΄ μμνκ² νλ¦° λ¬Έμ μΈκ°?
1μκ°μ΄λ΄λ‘ νλ Έλ λ¬Έμ μΈκ°?β
1μκ° μ΄μ or λ©°μΉ μ λκ³ νμ΄λ΄€λλ νλ¦° λ¬Έμ μΈκ°?
μκ°μ μ¨λ λλ¬΄μ§ ν μ μλ λ¬Έμ μΈκ°?
μ루μ μ μ°Ύμλ΄€λκ°?
λμ΄λ 체κ°
μ΅μ
μ
μ€β
ν
μ΄ν΄λ
μλ²½ν μ΄ν΄β
λ€μ ν·κ°λ¦¬λ λΆλΆλ€μ΄ μμ
μ΄ν΄ λͺ»ν¨
λ¬Έμ
μ μ Aλ₯Ό Bλ‘ λ°κΎΈλ €κ³ νλ€. κ°λ₯ν μ°μ°μ λ€μκ³Ό κ°μ λ κ°μ§μ΄λ€.
- 2λ₯Ό κ³±νλ€.
- 1μ μμ κ°μ₯ μ€λ₯Έμͺ½μ μΆκ°νλ€.
Aλ₯Ό Bλ‘ λ°κΎΈλλ° νμν μ°μ°μ μ΅μκ°μ ꡬν΄λ³΄μ.
λμ νμ΄
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from collections import deque
A,B=map(int,input().split())
queue=deque()
queue.append((A,1))
while queue:
v=queue.popleft()
v1=v[0]*2
v2=(v[0]*10)+1
if v1==B or v2==B:
print(v[1]+1)
break
if v1<B:
queue.append((v1,v[1]+1))
if v2<B:
queue.append((v2,v[1]+1))
else:
print(-1)
- 2λ₯Ό κ³±νλ€. β *2
- 1μ μμ κ°μ₯ μ€λ₯Έμͺ½μ μΆκ°νλ€. β *10+1
- μμ²λΌ μμ μΈμΈ μ μλ€. λ°λΌμ BFSλ°©μμΌλ‘ κ°μ λ§λ€ μ μλμ§ νμνλλ‘ μ½λ©νμλ€. μ΄ λ, μλ countλ°©μμΌλ‘ λͺλ²μ κ³μ°μ ν΄μΌ νλμ§ κ³μ°νλ €κ³ νλλ°, μ°μ°μ νλ² ν λλ§λ€ +1μ λνλ κ²μΌλ‘ κ³μ°ν μ μμλ€.(κ°μ depthλ₯Ό κ°λ nodeμ κ³μ°μΌ μλ μκΈ° λλ¬Έ)
- λ°λΌμ (μ°μ°κ°, μ΄ μ°μ° μ)μ νν ννλ‘ queueμ μ μ₯νλ BFS μκ³ λ¦¬μ¦μ μ¬μ©νμλ€.
+) whileμλ elseλ₯Ό μ¬μ©ν μ μλ€.
This post is licensed under CC BY 4.0 by the author.