Solved.ac κΈ°μ€ π₯ 골λ 5
λ¬Έμ
μλΉμ΄λ λμκ³Ό μ¨λ°κΌμ§μ νκ³ μλ€. μλΉμ΄λ νμ¬ μ N(0 ≤ N ≤ 100,000)μ μκ³ , λμμ μ K(0 ≤ K ≤ 100,000)μ μλ€. μλΉμ΄λ κ±·κ±°λ μκ°μ΄λμ ν μ μλ€. λ§μ½, μλΉμ΄μ μμΉκ° XμΌ λ κ±·λλ€λ©΄ 1μ΄ νμ X-1 λλ X+1λ‘ μ΄λνκ² λλ€. μκ°μ΄λμ νλ κ²½μ°μλ 0μ΄ νμ 2*Xμ μμΉλ‘ μ΄λνκ² λλ€.
μλΉμ΄μ λμμ μμΉκ° μ£Όμ΄μ‘μ λ, μλΉμ΄κ° λμμ μ°Ύμ μ μλ κ°μ₯ λΉ λ₯Έ μκ°μ΄ λͺ μ΄ νμΈμ§ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫 λ²μ§Έ μ€μ μλΉμ΄κ° μλ μμΉ Nκ³Ό λμμ΄ μλ μμΉ Kκ° μ£Όμ΄μ§λ€. Nκ³Ό Kλ μ μμ΄λ€.
μΆλ ₯
μλΉμ΄κ° λμμ μ°Ύλ κ°μ₯ λΉ λ₯Έ μκ°μ μΆλ ₯νλ€.
λ¬Έμ νμ΄
λ¬Έμ μμ μ£Όλ μ‘°κ±΄μ΄ κΈ°μ‘΄μ μ¨λ°κΌμ§κ³Όλ λ€λ₯Έμ μ΄ μλ€. μλ μμΉμ μ΄λμ λ€ 1μ΄λ‘ ν΅μΌλμ΄μμλλ°, μ¬κΈ°μ μ λ€ μμ§μλ§ 1μ΄κ° μμλλ€κ³ λμ¨λ€. μ¦ μκ°μ΄λμ ν λλ μκ°μ΄ μμλμ§ μλλ€λ λ§μ΄λ€. μ΄ μ λ§ μ ꡬνν΄μ£Όλ©΄ λλ€κ³ μκ°νλ€.
μ²μμ μ΄ μ리μ¦μ μ΄μ λ¬Έμ μ λ‘μ§μ λ°λΌ νμλ€. x-1,x+1, x*2 λ₯Ό νλλ‘ λ¬Άμ΄μ forλ¬Έμ λλ Έμ§λ§, λ΅μ μ λμ€μ§ μμλ€.
κ·Έλ¬λ€ μ¬λ¬ λΈλ‘κ·Έλ₯Ό λλ©° λ‘μ§μ νμ νκ³ , λ΅μ λμΆνλ€.
μΌλ¨ μμ λ¬Έμ λ₯Ό νΈλ κ³Όμ μ μ΄ν΄λ΄€λ€.
μμ λ¬Έμ μ inputμ 5 , 17 .
μ΄ λ¬Έμ λ₯Ό μλΉμ΄κ° 5-10-9-18-17 μμΌλ‘ κ°λ©΄ 2μ΄λ§μ λμμ μ°Ύμ μ μλ€. λ‘ νΈλ ννΈλ₯Ό 보며, λ¨Όμ κ³±νκ³ μ λ€λ‘ λΉΌλ λ‘μ§μ΄ λ§κ² ꡬλ λΌλ μκ°μ ν΄λλ€. λ°λΌμ νλ²μ λ€ νλκ² μλ, λ¨Όμ κ³±νκ³ μ λ€λ‘ λΉΌμ£Όλ κ±Έ ꡬμνλ€.
# μ¨λ°κΌμ§ 3
import sys
from collections import deque
input = sys.stdin.readline
n,k = map(int,input().split())
MAX_INDEX = 100000
board = [-1] * (MAX_INDEX+1)
#dist = [False] * (MAX_INDEX+1)
q = deque()
q.append(n)
board[n] = 0
#dist[n] = True
while q:
x = q.popleft()
if x == k:
break
if x * 2 <= MAX_INDEX and board[x*2] == -1: #dist[x*2] == False:
q.append(x*2)
board[x*2] = board[x]
#dist[x*2] = True
for nx in (x-1, x+1):
if 0 <= nx <= MAX_INDEX and board[nx] == -1: #dist[nx] == False:
q.append(nx)
board[nx] = board[x] + 1
#dist[nx] = True
print(board[k])
μ£Όμμ²λ¦¬μ μλ―Έλ , dist 리μ€νΈλ₯Ό λ§λ€μ΄ μ΄κ² λ°©λ¬Έμ νμλμ§ μνμλμ§λ₯Ό νλ¨νλ 리μ€νΈμ΄λ€.
κ·Όλ° μκ°μ λ€μ ν΄λ³΄λ, κ΅³μ΄ distκ° νμ μκ³ , μ΄κΈ° μ€μ μ ν΄λ Ό boardμ κ°μ΄ λ§μΌ λ°λμμΌλ©΄ μ§λκ° κ²μ΄λ, κ·Έ κ°μΌλ‘ distμ μν μ λ체νλ€.
μ½λλ₯Ό 보면, λ¨Όμ μΈλ±μ€λ₯Ό λ½μμ 2λ₯Ό κ³±ν΄μ£Όκ³ , κ·Έλ€μμ forλ¬Έμ λμκ°λ νμμΌλ‘ κΎΈλ©°μ‘λ€.
μλμ λ§μμ΅λλ€λ dist 리μ€νΈλ₯Ό νμ©ν κ², μμ κΊΌλ μμ€κ²μ΄λ€. (μλμ°¨μ΄λ λ³λ‘ μμλ€..)
'Algorithm > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
BOJ 16930. λ¬λ¦¬κΈ° (νμ΄μ¬ Python) (0) | 2021.06.21 |
---|---|
BOJ 13913. μ¨λ°κΌμ§ 4 (νμ΄μ¬ Python) (0) | 2021.06.20 |
15688 μ μ λ ¬νκΈ° 5 (C++) (0) | 2021.05.04 |
15683 κ°μ (C++) (0) | 2021.05.01 |
6593 μλ² λΉλ© (C++) (0) | 2021.04.28 |
λκΈ