import heapq
import sys
input = sys.stdin.readline
INF = int(1e9)
def solution(n, edge):
start = 1
graph = [[] for _ in range(n + 1)]
distance = [INF] * (n + 1)
for i in edge:
graph[i[0]].append((i[1], 1))
graph[i[1]].append((i[0], 1))
q = []
heapq.heappush(q, (0, start))
distance[start] = 0
while q:
dist, now = heapq.heappop(q)
if distance[now] < dist:
continue
for i in graph[now]:
cost = dist + i[1]
if cost < distance[i[0]]:
distance[i[0]] = cost
heapq.heappush(q, (cost, i[0]))
max_dist = max(distance[1:])
return distance.count(max_dist)
다익스트라 알고리즘을 활용하여 가장 멀리 있는 노드들의 개수를 리턴하는 문제.
heapq를 사용하여 시간 복잡도를 O(ElogV)로 단축시키는 것이 중요하다.
다익스트라가 요즘 코테에 많이 나오는 것 같아서 별표 다섯개 ! ⭐⭐⭐⭐⭐
'Algorithm | SQL > Programmers' 카테고리의 다른 글
[Programmers | Level 3] 단어 변환 (Python) (0) | 2021.05.19 |
---|---|
[Programmers | Level 3] 네트워크 (Python) (0) | 2021.05.19 |
[Programmers | Level 2] 괄호 변환 (Python) (2020 KAKAO BLIND RECRUITMENT) (0) | 2021.05.13 |
[Programmers | Level 2] 뉴스 클러스터링 (Python) (2018 KAKAO BLIND RECRUITMENT) (0) | 2021.05.12 |
[Programmers | Level 2] 오픈채팅방 (Python) (2019 KAKAO BLIND RECRUITMENT) (0) | 2021.05.12 |