💡문제접근

  • BFS 완전탐색 유형의 문제
  • 주의사항 : 1초 후X-1 또는 X+1로 이동, 0초 후2×X로 순간이동

💡코드(메모리 : 35272KB, 시간 : 120ms)

from collections import deque
import sys
input = sys.stdin.readline

N, K = map(int, input().strip().split())
visited = [-1] * 100001

def BFS(N):
    queue = deque()
    queue.append(N)
    visited[N] = 0
    while queue:
        v = queue.popleft()
        if v == K:
            print(visited[v])
            break
        if 0 <= v - 1 <= 100000 and visited[v-1] == -1:
            visited[v-1] = visited[v] + 1
            queue.append(v-1)
        if 0 <= 2 * v <= 100000 and visited[2*v] == -1:
            visited[v*2] = visited[v]
            queue.append(2*v)
        if 0 <= v + 1 <= 100000 and visited[v+1] == -1:
            visited[v+1] = visited[v] + 1
            queue.append(v+1)

BFS(N)

💡소요시간 : 27m

0개의 댓글