728x90
반응형
너비 우선 탐색 or 다익스트라 문제인데 그냥 너비 우선 탐색으로 풀었다. 이전 숨바꼭질 문제와는 다르게
순간이동할 때 걸리는 시간이 0이다. 이 점 때문에 node-1, node+1보다 node*2를 먼저 탐색을 해줘야 한다.
node*2를 node+1 보다 나중에 탐색해버리면 시작 노드가 1일 때 노드 2의 값이 0이 아닌 1이 되어버려서 틀린다.
from collections import deque
def bfs(N, K):
queue = deque([N])
graph[N] = 0
while queue:
node = queue.popleft()
if node == K:
return ;
for n in [node*2, node-1, node+1]:
if (0 <= n <= 100000) and graph[n] == -1:
queue.append(n)
graph[n] = graph[node] + (0 if n == node*2 else 1)
N, K = map(int, input().split())
graph = [-1]*100001
bfs(N, K)
print(graph[K])
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 2458번 키 순서(python) (0) | 2021.03.22 |
---|---|
백준 알고리즘 11404번 플로이드(python) (0) | 2021.03.22 |
백준 알고리즘 1916번 최소비용 구하기(python) (0) | 2021.03.22 |
백준 알고리즘 1446번 지름길(python) (0) | 2021.03.22 |
백준 알고리즘 1504번 특정한 최단 경로(python) (0) | 2021.03.22 |