https://www.acmicpc.net/problem/13549
13549번: 숨바꼭질 3
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
문제: 동생이 위치한 K에 도달할 수 있는 최단 기간을 출력하는 문제
풀이 방법: 다잌스트라
풀이 코드:
import sys
import heapq
MAX = 100001
n,k = map(int,sys.stdin.readline().rstrip().split())
distance = [1e9] * MAX
visited = [False] * MAX
distance[n] = 0
q = [[0,n]]
def dijkstra():
while q:
nowCost, nowNode = heapq.heappop(q)
visited[nowNode] = True
if nowNode == k:
break
move = [[nowCost, nowNode*2], [nowCost + 1, nowNode - 1], [nowCost+1, nowNode+1]]
for i in range(3):
if move[i][1] >= MAX or move[i][1] < 0 or visited[move[i][1]]:
continue
if distance[move[i][1]] > move[i][0]:
distance[move[i][1]] = move[i][0]
heapq.heappush(q,move[i])
dijkstra()
print(distance[k])
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘/11727번/파이썬] 2xn 타일링 2 (0) | 2022.09.05 |
---|---|
[백준알고리즘/2156번/파이썬] 포도주 시식 (0) | 2022.09.02 |
[백준알고리즘/17298번/파이썬] 오큰수 (0) | 2022.08.31 |
[백준알고리즘/2493번/파이썬] 탑 (0) | 2022.08.31 |
[백준알고리즘/1759번/파이썬] 암호 만들기 (0) | 2022.08.30 |