λ¬Έμ
μλΉμ΄λ λμκ³Ό μ¨λ°κΌμ§μ νκ³ μλ€. μλΉμ΄λ νμ¬ μ N(0 ≤ N ≤ 100,000)μ μκ³ , λμμ μ K(0 ≤ K ≤ 100,000)μ μλ€. μλΉμ΄λ κ±·κ±°λ μκ°μ΄λμ ν μ μλ€. λ§μ½, μλΉμ΄μ μμΉκ° XμΌ λ κ±·λλ€λ©΄ 1μ΄ νμ X-1 λλ X+1λ‘ μ΄λνκ² λλ€. μκ°μ΄λμ νλ κ²½μ°μλ 1μ΄ νμ 2*Xμ μμΉλ‘ μ΄λνκ² λλ€.
μλΉμ΄μ λμμ μμΉκ° μ£Όμ΄μ‘μ λ, μλΉμ΄κ° λμμ μ°Ύμ μ μλ κ°μ₯ λΉ λ₯Έ μκ°μ΄ λͺ μ΄ νμΈμ§ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫 λ²μ§Έ μ€μ μλΉμ΄κ° μλ μμΉ Nκ³Ό λμμ΄ μλ μμΉ Kκ° μ£Όμ΄μ§λ€. Nκ³Ό Kλ μ μμ΄λ€.
μΆλ ₯
μλΉμ΄κ° λμμ μ°Ύλ κ°μ₯ λΉ λ₯Έ μκ°μ μΆλ ₯νλ€.
https://www.acmicpc.net/problem/1697
π‘ νμ΄ λ° μ½λ
from collections import deque
n, k = map(int, input().split())
graph = [-1] * 100001
dq = [1, -1, 2]
def bfs(start):
queue = deque()
queue.append(start)
graph[start] = 0
while queue:
q = queue.popleft()
for i in dq:
nq = q * 2 if i == 2 else q + i
if 0 <= nq <= 100000 and graph[nq] == -1:
queue.append(nq)
graph[nq] = graph[q] + 1
if nq == k:
return graph[nq]
print(bfs(n))
μ²μ μ΄ λ¬Έμ λ₯Ό μ½κ³ κ·Έλν νμ λ¬Έμ μμ μμμ±μ§ λͺ»νλ€. ννΈλ₯Ό λ³΄κ³ μμΌ μ μ xκ° μ μ x-1, x+1, x*2μ μ°κ²°λμ΄ μλ ννμμ μκ³ BFSλ₯Ό μ μ©νμλ€. λ, μ²μμλ λ°©λ¬Έμ²λ¦¬κ° νμνμ§ μλ€κ³ μκ°νμμΌλ λ°©λ¬Έμ²λ¦¬λ₯Ό ν΄μ£Όμ§ μμΌλ©΄ μ€λ³΅ νμμ λ°μνμ¬ λ©λͺ¨λ¦¬ μ΄κ³Όκ° λ΄λ€.
λ¬Έμ λ₯Ό 보μλ§μ μκ³ λ¦¬μ¦μ λ μ¬λ¦¬κΈ° μν΄μ μ°μ΅μ΄ λμ± νμν κ² κ°λ€!
'Algorithm > π Baekjoon Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λ°±μ€ 2468λ² μμ μμ - νμ΄μ¬(Python) (0) | 2021.07.18 |
---|---|
[BOJ] λ°±μ€ 2583λ² μμ ꡬνκΈ° - νμ΄μ¬(Python) (0) | 2021.07.17 |
[BOJ] λ°±μ€ 7576λ² ν λ§ν - νμ΄μ¬(Python) (0) | 2021.07.15 |
[BOJ] λ°±μ€ 2667λ² λ¨μ§λ²νΈλΆμ΄κΈ° - νμ΄μ¬(Python) (0) | 2021.07.15 |
[BOJ] λ°±μ€ 2178λ² λ―Έλ‘ νμ - νμ΄μ¬(Python) (0) | 2021.07.15 |