문제 접근(문제 분석 → 풀이 아이디어)
[1] BFS 로 풀기 (0-1 BFS)
[2] 다익스트라 사용하기
코드를 풀이할 때 적었던 플로우가 있나요?
입력 변수 입력하기
BFS 탐색 시 순간이동을 우선순위를 둠
→ for문 탐색시 , 2*n >> n-1, n+1 순으로 탐색
배열 visited에 도착 시간 업로드
import sys
from collections import deque
input = sys.stdin.readline
MAX = 100001
N , K = map(int, input().split())
visited = [MAX] * (MAX+1)
# 2. BFS로 탐색하기
q = deque([N])
visited[N]= 0
while q :
cx= q.popleft()
ct = visited[cx]
if cx == K:
break
for nx in (2*cx , cx-1 , cx+1 ) : # 순간이동 >> 걷기 순의 탐색 우선순위 두기
if 0 <= nx < MAX and visited[nx] >= MAX : # nx 의 제한 조건
# 시간 업데이트
if nx == 2*cx :
visited[nx] = visited[cx]
else :
visited[nx] = visited[cx] +1
q.append(nx)
print(visited[K])