728x90
λ°˜μ‘ν˜•

문제 😡‍πŸ’«

μˆ˜λΉˆμ΄λŠ” 동생과 μˆ¨λ°”κΌ­μ§ˆμ„ ν•˜κ³ μžˆλ‹€. μˆ˜λΉˆμ΄λŠ” ν˜„μž¬ 점N에 있고 동생은 점 K에 μžˆλ‹€. μˆ˜λΉˆμ΄λŠ” κ±·κ±°λ‚˜ μˆœκ°„μ΄λ™μ„ ν•  수 μžˆλ‹€. λ§Œμ•½, 수빈이의 μœ„μΉ˜κ°€ X일 λ•Œ κ±·λŠ”λ‹€λ©΄ 1초 후에 X-1 λ˜λŠ” X+1둜 μ΄λ™ν•˜κ²Œ λœλ‹€, μˆœκ°„μ΄λ™μ„ ν•˜λŠ” κ²½μš°μ—λŠ” 1초 후에 2 * X의 μœ„μΉ˜λ‘œ μ΄λ™ν•˜κ²Œ λœλ‹€

 

μˆ˜λΉˆμ΄μ™€ λ™μƒμ˜ μœ„μΉ˜κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, μˆ˜λΉˆμ΄κ°€ 동생을 찾을 수 μžˆλŠ” κ°€μž₯ λΉ λ₯Έ μ‹œκ°„μ΄ λͺ‡ 초 후인지 κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

μž…λ ₯!

첫 번째 쀄에 μˆ˜λΉˆμ΄κ°€ μžˆλŠ” μœ„μΉ˜ Nκ³Ό 동생이 μžˆλŠ” μœ„μΉ˜ Kκ°€ 주어진닀. Nκ³Ό KλŠ” μ •μˆ˜μ΄λ‹€.

 

좜λ ₯!

μˆ˜λΉˆμ΄κ°€ 동생을 μ°ΎλŠ” κ°€μž₯ λΉ λ₯Έ μ‹œκ°„μ„ 좜λ ₯ν•œλ‹€.4

 

λ‚΄ ν’€πŸ¦·

# 1697. μˆ¨λ°”κΌ­μ§ˆ
from collections import deque
def bfs(start, depth):
    visited = [0] * 100001
    q = deque()
    q.append((start, depth))
    visited[start] = 1
    while q:
        s, d = q.popleft()

        if s == K:
            return d

        for nxt_s in [s-1, s+1, s*2]:
            if 0 <= nxt_s <= 100000 and (not visited[nxt_s] or visited[nxt_s] > d+1):
                q.append((nxt_s, d+1))
                visited[nxt_s] = d+1

N, K = map(int, input().split())
visited = [0] * K
result = dfs(N, 0)
print(result)

 

 μ²˜μŒμ— λ„λŒ€μ²΄κ°€ μ–΄λ–»κ²Œ 접근해야할지도 λͺ¨λ₯΄κ² κ³  dpλ‚˜ while문으둜 ν’€μ–΄μ•Όκ² λ‹€ μ‹Άμ—ˆλŠ”λ° μ•Œκ³ λ³΄λ‹ˆ bfs λ¬Έμ œμ˜€λ‹€γ…œγ…œ

μ‹œμž‘μ κ³Ό 깊이λ₯Ό λ„£μ–΄μ„œ μ‹œμž‘μ μ΄ 끝점과 같아지면 return으둜 깊이λ₯Ό λ°›μ•„μ£Όλ©΄ μ΅œμ†Œκ°’μ„ ꡬ할 수 μžˆλ‹€!!

μ–΄λ €μ› λ˜ 뢀뢄은 λ°©λ¬Έ ν–ˆλ˜ κ³³ λ˜λŠ” κΉŠμ΄κ°€ 더 κΉŠμ€κ³³κ³Ό κ·Έμ „κΉŒμ§€μ˜ κΉŠμ΄μ— ν•΄λ‹Ήν•˜λŠ” 값이 κ°™μ•˜μ„λ•ŒλŠ” λ°°μ œν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€λŠ” κ²ƒμ΄μ—ˆλ‹€... λ‹€λ₯Έ λΆ„λ“€ μ½”λ“œλ₯Ό λ³΄μ•˜μ„λ•ŒλŠ” 이미 λ°©λ¬Έν•œκ³³μ„ continue둜 λ„˜κ²¨μ„œ κ°„λ‹¨νžˆ ν•΄κ²°ν•΄ μ£ΌλŠ”κ²ƒμ„ λ³Ό 수 μžˆμ—ˆλ‹€...μ–΄λ–»κ²Œ ν’€μ–΄μ•Όν• μ§€κΉŒμ§€ κ³ λ―Όν•œ λ¬Έμ œλŠ” 였랜만이라 λ”μš± νž˜λ“€μ—ˆλ‹€ πŸ˜‚πŸ˜‚πŸ˜‚πŸ˜‚

 

 

 

 

 

728x90
λ°˜μ‘ν˜•

+ Recent posts