|
| 1 | +import heapq |
| 2 | + |
| 3 | +def solution(N, road, K): |
| 4 | + answer = 0 |
| 5 | + |
| 6 | + graph = [[] for _ in range(N+1)] |
| 7 | + |
| 8 | + for i, j, cost in road: |
| 9 | + graph[i].append([j, cost]) |
| 10 | + graph[j].append([i, cost]) |
| 11 | + |
| 12 | + result = dijkstra(graph, 1, N) |
| 13 | + |
| 14 | + for r in result: |
| 15 | + if r <= K: |
| 16 | + answer += 1 |
| 17 | + |
| 18 | + return answer |
| 19 | + |
| 20 | + |
| 21 | +def dijkstra(graph, start, N): |
| 22 | + distances = [100000000 for _ in range(N+1)] |
| 23 | + distances[start] = 0 |
| 24 | + queue = [] |
| 25 | + heapq.heappush(queue, [distances[start], start]) |
| 26 | + |
| 27 | + while queue: |
| 28 | + current_distance, current_destination = heapq.heappop(queue) |
| 29 | + |
| 30 | + if distances[current_destination] < current_distance: |
| 31 | + continue |
| 32 | + |
| 33 | + for new_destination, new_distance in graph[current_destination]: |
| 34 | + |
| 35 | + distance = current_distance + new_distance |
| 36 | + if distance < distances[new_destination]: |
| 37 | + distances[new_destination] = distance |
| 38 | + heapq.heappush(queue, [distance, new_destination]) |
| 39 | + |
| 40 | + return distances |
| 41 | + |
| 42 | + |
| 43 | + ''' |
| 44 | + 정확성 테스트 |
| 45 | +테스트 1 〉 통과 (0.02ms, 10.2MB) |
| 46 | +테스트 2 〉 통과 (0.02ms, 10.3MB) |
| 47 | +테스트 3 〉 통과 (0.02ms, 10.2MB) |
| 48 | +테스트 4 〉 통과 (0.02ms, 10.3MB) |
| 49 | +테스트 5 〉 통과 (0.03ms, 10.3MB) |
| 50 | +테스트 6 〉 통과 (0.01ms, 10.3MB) |
| 51 | +테스트 7 〉 통과 (0.02ms, 10.3MB) |
| 52 | +테스트 8 〉 통과 (0.02ms, 10.3MB) |
| 53 | +테스트 9 〉 통과 (0.01ms, 10.3MB) |
| 54 | +테스트 10 〉 통과 (0.02ms, 10.3MB) |
| 55 | +테스트 11 〉 통과 (0.02ms, 10.3MB) |
| 56 | +테스트 12 〉 통과 (0.04ms, 10.2MB) |
| 57 | +테스트 13 〉 통과 (0.06ms, 10.2MB) |
| 58 | +테스트 14 〉 통과 (0.57ms, 10.3MB) |
| 59 | +테스트 15 〉 통과 (0.82ms, 10.6MB) |
| 60 | +테스트 16 〉 통과 (0.02ms, 10.4MB) |
| 61 | +테스트 17 〉 통과 (0.06ms, 10.2MB) |
| 62 | +테스트 18 〉 통과 (0.20ms, 10.3MB) |
| 63 | +테스트 19 〉 통과 (0.76ms, 10.6MB) |
| 64 | +테스트 20 〉 통과 (0.17ms, 10.3MB) |
| 65 | +테스트 21 〉 통과 (0.93ms, 10.6MB) |
| 66 | +테스트 22 〉 통과 (0.29ms, 10.3MB) |
| 67 | +테스트 23 〉 통과 (0.93ms, 10.6MB) |
| 68 | +테스트 24 〉 통과 (0.66ms, 10.7MB) |
| 69 | +테스트 25 〉 통과 (1.58ms, 10.6MB) |
| 70 | +테스트 26 〉 통과 (1.63ms, 10.8MB) |
| 71 | +테스트 27 〉 통과 (1.71ms, 10.6MB) |
| 72 | +테스트 28 〉 통과 (1.62ms, 10.7MB) |
| 73 | +테스트 29 〉 통과 (1.55ms, 10.6MB) |
| 74 | +테스트 30 〉 통과 (1.55ms, 10.7MB) |
| 75 | +테스트 31 〉 통과 (0.09ms, 10.2MB) |
| 76 | +테스트 32 〉 통과 (0.12ms, 10.3MB) |
| 77 | + ''' |
0 commit comments