βλ¬Έμ
https://www.acmicpc.net/problem/13549
λ©λͺ¨λ¦¬: 115084 KB, μκ°: 232 ms
κ·Έλν μ΄λ‘ , κ·Έλν νμ, λλΉ μ°μ νμ, μ΅λ¨ κ²½λ‘, λ°μ΄ν¬μ€νΈλΌ, 0-1 λλΉ μ°μ νμ
μλΉμ΄λ λμκ³Ό μ¨λ°κΌμ§μ νκ³ μλ€. μλΉμ΄λ νμ¬ μ N(0 ≤ N ≤ 100,000)μ μκ³ , λμμ μ K(0 ≤ K ≤ 100,000)μ μλ€. μλΉμ΄λ κ±·κ±°λ μκ°μ΄λμ ν μ μλ€. λ§μ½, μλΉμ΄μ μμΉκ° XμΌ λ κ±·λλ€λ©΄ 1μ΄ νμ X-1 λλ X+1λ‘ μ΄λνκ² λλ€. μκ°μ΄λμ νλ κ²½μ°μλ 0μ΄ νμ 2*Xμ μμΉλ‘ μ΄λνκ² λλ€.
μλΉμ΄μ λμμ μμΉκ° μ£Όμ΄μ‘μ λ, μλΉμ΄κ° λμμ μ°Ύμ μ μλ κ°μ₯ λΉ λ₯Έ μκ°μ΄ λͺ μ΄ νμΈμ§ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
βπ»νμ΄
거리λ₯Ό μ λΆ INFλ‘ μ΄κΈ°νν ν μμμ λ§ 0μΌλ‘ μ΄κΈ°ννλ€. κ·Έλ¦¬κ³ ν νμ μμ μμΉ Nκ³Ό νμ¬ μκ° 0μ κΈ°λ‘νλ€.
μ΄ κ²½μ°μλ μ μ μ κ°μκ° μ ν΄μ Έ μλ κ²μ΄ μλλ―λ‘ ν ν μμ μμκ° μ‘΄μ¬νλμ§ μ νλμ§ μ¬λΆλ‘ whileλ¬Έμ μ€ννλ€.
λ€μ μμΉκ° 0 μμ 100,000 μ¬μ΄μ΄λ©΄μ λ μ κ² κ±Έλ¦¬λ μκ°μ λ€μ μμΉμ κΈ°λ‘νλ€. κ·Έλ¦¬κ³ λ€μ μμΉμ μκ°μ ν νμ λ£λλ€.
μ΄λ κ² νλ©΄ ν νμ μμκ° μμ λκΉμ§ νμΈνκ³ ν νκ° λΉμ΄μλ€λ©΄ μ΄μ λμμ μ°Ύμ μ μλ κ°μ₯ λΉ λ₯Έ μκ°μ μΆλ ₯νλ©΄ λλ€.
π»μ½λ
import sys
from heapq import heappush, heappop
input = sys.stdin.readline
INF = 1e9
N, K = map(int, input().split())
time = [INF] * 100001
def dijkstra():
time[N] = 0
move = []
heappush(move, (0, N))
while move:
t, x = heappop(move)
for nt, nx in [(t, x*2), (t+1, x+1), (t+1, x-1)]:
if 0 <= nx <= 100000 and time[nx] > nt:
time[nx] = nt
heappush(move, (nt, nx))
dijkstra()
print(time[K])
πνκΈ°
κ³μ λ°νμ μλ¬κ° λμ μ κ·Έλ°κ° νλλ° heapqκ° λ¨Όμ μμ§λλ κ²½μ°μ x λ²μκ° λ²μ΄λλ κ±Έ κ³ λ €νμ§ μμμ μλ¬κ° λ¬λ€...κ·Έλμ μ€κ°μ BFSλ‘ λ°κΏλ΄€λλ° λ μ무리 ν΄λ μ λΌμ κ²°κ΅ λ€μ heapqλ‘ μ±κ³΅...
'Coding Test > Algorithms' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1717. μ§ν©μ νν/Python - Gold5 (0) | 2025.08.17 |
---|---|
[λ°±μ€] 1197. μ΅μ μ€ν¨λ νΈλ¦¬/Python - Gold4 (1) | 2025.08.16 |
[λ°±μ€] 11657. νμλ¨Έμ /Python - Gold4 (1) | 2025.08.14 |
[λ°±μ€] 9655. λ κ²μ/Python - Silver5 (2) | 2025.08.11 |
[λ°±μ€] 2630. μμ’ μ΄ λ§λ€κΈ°/Python - Silver2 (0) | 2025.08.10 |