Skip to content

Commit 88accd9

Browse files
committed
알고스팟 풀이
1 parent c506a4a commit 88accd9

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

BAEKJOON/3Gold/알고스팟.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# 그래프 이론, 그래프 탐색, 최단 경로, 데이크스트라, 0-1 너비 우선 탐색
2+
# https://www.acmicpc.net/problem/1261
3+
4+
input = __import__("sys").stdin.readline
5+
M,N = map(int, input().split())
6+
board = [input() for _ in range(N)]
7+
8+
9+
def dijkstra(start: tuple):
10+
import heapq
11+
12+
INF = 0xFFFFFFFF
13+
distance = [[INF for _ in range(M)] for _ in range(N)]
14+
15+
# (비용, 정점) 을 큐에 추가
16+
queue = [(0, start)]
17+
x,y = start
18+
distance[x][y] = 0
19+
20+
while queue:
21+
dist, node = heapq.heappop(queue)
22+
cx, cy = node
23+
24+
# 저장된 거리보다 크면 넘기기
25+
if distance[cx][cy] < dist: continue
26+
27+
# 연결된 간선 중에서 비용이 낮은 경로 등록하기
28+
arrow = ((-1,0),(1,0),(0,-1),(0,1))
29+
for dx, dy in arrow:
30+
nx, ny = cx + dx, cy + dy
31+
if nx < 0 or nx >= N: continue
32+
if ny < 0 or ny >= M: continue
33+
34+
cost = int(board[nx][ny])
35+
_cost = distance[cx][cy] + cost
36+
if distance[nx][ny] <= _cost: continue
37+
38+
distance[nx][ny] = _cost
39+
heapq.heappush(queue, (_cost, (nx, ny)))
40+
41+
return distance[N-1][M-1]
42+
43+
44+
print(dijkstra((0,0)))

0 commit comments

Comments
 (0)