|
1 | 1 | import heapq
|
2 | 2 | import sys
|
3 | 3 | input = sys.stdin.readline
|
4 |
| -INF = int(1e9) # 무한을 의미하는 값으로 10억을 설정합니다. |
| 4 | +INF = int(1e9) # 무한을 의미하는 값으로 10억을 설정 |
5 | 5 |
|
6 | 6 | dx = [-1, 0, 1, 0]
|
7 | 7 | dy = [0, 1, 0, -1]
|
8 | 8 |
|
9 |
| -# 전체 테스트 케이스(Test Case)만큼 반복합니다. |
| 9 | +# 전체 테스트 케이스(Test Case)만큼 반복 |
10 | 10 | for tc in range(int(input())):
|
11 |
| - # 노드의 개수를 입력 받습니다. |
| 11 | + # 노드의 개수를 입력받기 |
12 | 12 | n = int(input())
|
13 | 13 |
|
14 |
| - # 전체 맵 정보를 입력 받습니다. |
| 14 | + # 전체 맵 정보를 입력받기 |
15 | 15 | graph = []
|
16 | 16 | for i in range(n):
|
17 | 17 | graph.append(list(map(int, input().split())))
|
18 | 18 |
|
19 |
| - # 최단 거리 테이블을 모두 무한으로 초기화합니다. |
| 19 | + # 최단 거리 테이블을 모두 무한으로 초기화 |
20 | 20 | distance = [[INF] * n for _ in range(n)]
|
21 | 21 |
|
22 |
| - x, y = 0, 0 # 시작 위치는 (0, 0)입니다. |
23 |
| - # 시작 노드로 가기 위한 비용은 (0, 0) 위치의 값으로 설정하여, 큐에 삽입합니다. |
| 22 | + x, y = 0, 0 # 시작 위치는 (0, 0) |
| 23 | + # 시작 노드로 가기 위한 비용은 (0, 0) 위치의 값으로 설정하여, 큐에 삽입 |
24 | 24 | q = [(graph[x][y], x, y)]
|
25 | 25 | distance[x][y] = graph[x][y]
|
26 | 26 |
|
27 |
| - # 다익스트라 알고리즘을 수행합니다. |
| 27 | + # 다익스트라 알고리즘을 수행 |
28 | 28 | while q:
|
29 |
| - # 가장 최단 거리가 짧은 노드에 대한 정보를 꺼냅니다. |
| 29 | + # 가장 최단 거리가 짧은 노드에 대한 정보를 꺼내기 |
30 | 30 | dist, x, y = heapq.heappop(q)
|
31 |
| - # 현재 노드가 이미 처리된 적이 있는 노드라면 무시합니다. |
| 31 | + # 현재 노드가 이미 처리된 적이 있는 노드라면 무시 |
32 | 32 | if distance[x][y] < dist:
|
33 | 33 | continue
|
34 |
| - # 현재 노드와 연결된 다른 인접한 노드들을 확인합니다. |
| 34 | + # 현재 노드와 연결된 다른 인접한 노드들을 확인 |
35 | 35 | for i in range(4):
|
36 | 36 | nx = x + dx[i]
|
37 | 37 | ny = y + dy[i]
|
38 |
| - # 맵의 범위를 벗어나는 경우 무시합니다. |
| 38 | + # 맵의 범위를 벗어나는 경우 무시 |
39 | 39 | if nx < 0 or nx >= n or ny < 0 or ny >= n:
|
40 | 40 | continue
|
41 | 41 | cost = dist + graph[nx][ny]
|
|
0 commit comments