
풀이
dp 및 bfs를 이용해 목적지까지의 최단 시간을 계산한다.
X 위치까지의 최단 시간을 dp에 저장한다.
X 위치에서 이동할 수 있는 X-1, X+1, X*2 위치의 dp값을 dp[X]+1로 저장한다.
이들을 큐에 넣어 bfs를 실행한다.
방문 여부는 dp값을 -1과 비교하여 확인한다.
dp[K] 값을 구했다면, while문을 종료하고 답을 출력한다.
코드
from collections import deque
N, K = map(int, input().split())
dp = [-1 for _ in range(100001)]
dp[N] = 0
queue = deque([N])
while queue:
node = queue.popleft()
tmp = [node - 1, node + 1, node * 2]
for t in tmp:
if 0 <= t < 100001 and dp[t] == -1:
dp[t] = dp[node] + 1
queue.append(t)
if K in tmp:
print(dp[K])
break
'백준 > 실버 1' 카테고리의 다른 글
| 2156번 - 포도주 시식(Python) (0) | 2025.01.25 |
|---|---|
| 1932번 - 정수 삼각형(Python) (0) | 2025.01.24 |
| 1149번 - RGB거리 (0) | 2025.01.23 |
| 2667번 - 단지번호붙이기(Python) (0) | 2025.01.23 |
| 2178번 - 미로 탐색(Python) (0) | 2025.01.23 |