Solved.ac κΈ°μ€ π₯골λ 4
λ¬Έμ
μλΉμ΄λ λμκ³Ό μ¨λ°κΌμ§μ νκ³ μλ€. μλΉμ΄λ νμ¬ μ N(0 ≤ N ≤ 100,000)μ μκ³ , λμμ μ K(0 ≤ K ≤ 100,000)μ μλ€. μλΉμ΄λ κ±·κ±°λ μκ°μ΄λμ ν μ μλ€. λ§μ½, μλΉμ΄μ μμΉκ° XμΌ λ κ±·λλ€λ©΄ 1μ΄ νμ X-1 λλ X+1λ‘ μ΄λνκ² λλ€. μκ°μ΄λμ νλ κ²½μ°μλ 1μ΄ νμ 2*Xμ μμΉλ‘ μ΄λνκ² λλ€.
μλΉμ΄μ λμμ μμΉκ° μ£Όμ΄μ‘μ λ, μλΉμ΄κ° λμμ μ°Ύμ μ μλ κ°μ₯ λΉ λ₯Έ μκ°μ΄ λͺ μ΄ νμΈμ§ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫 λ²μ§Έ μ€μ μλΉμ΄κ° μλ μμΉ Nκ³Ό λμμ΄ μλ μμΉ Kκ° μ£Όμ΄μ§λ€. Nκ³Ό Kλ μ μμ΄λ€.
μΆλ ₯
첫째 μ€μ μλΉμ΄κ° λμμ μ°Ύλ κ°μ₯ λΉ λ₯Έ μκ°μ μΆλ ₯νλ€.
λμ§Έ μ€μ μ΄λ»κ² μ΄λν΄μΌ νλμ§ κ³΅λ°±μΌλ‘ ꡬλΆν΄ μΆλ ₯νλ€.
μμ μ λ ₯ 1
5 17
μμ μΆλ ₯ 1
4
5 4 8 16 17
λμΆ© μ΄λ κ² λμμΌ νλλ° μμ κ°μ₯ λΉ λ₯Έ μκ°μ μλ νλλλ‘ νλ©΄ λλ€. κ·Όλ°, λ€μ μ΄λ»κ² μ΄λνλκ² λ§λ§νλ€. κ·Έλμ μΌλ¨ 리μ€νΈ νμ 무μμ λ£μ΄λ΄€λ€.
μ,,,μ΄κ±΄ μλλΌκ³ μκ°νλ€..
κ·Έλ λ€λ©΄ μ΄λ»κ² ν΄μΌ ν κΉ,,? μ΄λ²μλ λ‘μ§μ μ°Ύμ보μλ€..γ γ γ γ γ (μΈμ λ΄ λ¨Έλ¦¬λ‘ μ°Ύμμ§..μ¬νλ€..)
μ°Έ λλ¨νμ κ² κ°λ€.. λ°λ‘ MAX 리μ€νΈλ₯Ό λ§λ€μ΄μ xκ°μ λ£κ³ , μ¬κ·λ₯Ό λ리며 μλ μμνλ κ°μ΄ λμ¬λκΉμ§ μΆλ ₯νλ©΄ λλκ±°μλ€.
λ§μ΄ μ΄ν΄κ° μ μκ°μλ μλλ°,
μΌλ¨ μ μΌ λΉ¨λ¦¬ κ°λ μκ°μ ꡬν λ, κ±°κΈ°λ€κ° move_to λΌκ³ λ°λ‘ λ§λ 리μ€νΈμ (μ΄κΈ°νλ₯Ό 0μΌλ‘ MAX_INDEX + 1 λ§νΌν΄μ€¬λ€) κ°μ΄ λ³Έλμ κ°μ λ£μ΄μ€λ€.
for nx in (x-1, x+1, x*2):
if 0 <= nx <= MAX_INDEX and board[nx] == MAX_INDEX:
q.append(nx)
board[nx] = board[x] + 1
move_to[nx] = x # μ΄κ±°λ€
κ·Έλ¬λκΉ μ΄λν κ³³μ νμ¬μ μΈλ±μ€ μλ₯Ό λ£μ΄μ€κ²μ΄λ€. μ΄λ κ² μ°¨κ³‘μ°¨κ³‘ λ£μ΄μ£Όκ³ ,
def move(n,m):
if n != m:
move(n,move_to[m])
print(m, end=' ')
μ΄λ κ² n,kκ°μ 맀κ°λ³μλ‘ λ£μ΄μ£Όκ³ λ λ€μ, λ€μμλΆν° μμ κ°λκ±°λ€. κ·Όλ° μ¬κ·λΌ λ€μ μμμλΆν° μΆλ ₯λλκ²μ΄λ€. (μ¬μ€ μ΄κ±΄ μ λͺ¨λ₯΄κ² λ€) μ΄λ κ² νμ΄λκ°λ€.
μ 체μ½λ
# μ¨λ°κΌμ§ 4
from collections import deque
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6)
n,k = map(int,input().split())
MAX_INDEX = 100000
board = [MAX_INDEX] * (MAX_INDEX+1)
move_to = [0] * (MAX_INDEX + 1)
q = deque()
q.append(n)
board[n] = 0
while q:
x = q.popleft()
if x == k:
break
for nx in (x-1, x+1, x*2):
if 0 <= nx <= MAX_INDEX and board[nx] == MAX_INDEX:
q.append(nx)
board[nx] = board[x] + 1
move_to[nx] = x
def move(n,m):
if n != m:
move(n,move_to[m])
print(m, end=' ')
print(board[k])
move(n,k)
μ°Έ,,νλ©΄ ν μλ‘ λ²½μ΄ λκ»΄μ§λ μκ³ λ¦¬μ¦μ μΈμμ΄λ€..
'Algorithm > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
BOJ 13413 μ€μ λ‘ μ¬λ°°μΉ (νμ΄μ¬) (0) | 2021.08.04 |
---|---|
BOJ 16930. λ¬λ¦¬κΈ° (νμ΄μ¬ Python) (0) | 2021.06.21 |
BOJ 13549. μ¨λ°κΌμ§ 3 (νμ΄μ¬ Python) (0) | 2021.06.20 |
15688 μ μ λ ¬νκΈ° 5 (C++) (0) | 2021.05.04 |
15683 κ°μ (C++) (0) | 2021.05.01 |
λκΈ