[프로그래머스] 가장 먼 노드 (python)
문제
https://programmers.co.kr/learn/courses/30/lessons/49189
풀이
import heapq
def solution(n, edge):
    INF = int(1e9)
    
    graph = [[] for _ in range(n+1)]
    distance = [INF]*(n+1)
    
    for a, b in edge:
        graph[a].append((b, 1))
        graph[b].append((a, 1))
    dijkstra(graph, distance, 1)
    distance.sort(reverse=True)
    '''
    # list method count로 대체 가능
    max_dist = distance[1]
    for dist in distance:
        if max_dist == dist:
            ans += 1
    '''
    print(distance)
    # return distance.count(distance[1])
    return distance.count(max(distance[1:]))
# 다익스트라 알고리즘
def dijkstra(graph, distance, start):
    q = []
    heapq.heappush(q, (0, start))
    distance[start] = 0
    while q:
        dist, now = heapq.heappop(q)
        if dist > distance[now]:
            continue
        for v, d in graph[now]:
            cost = dist + d
            if cost < distance[v]:
                distance[v] = cost
                heapq.heappush(q, (cost, v))
    return
 # 예시 값 출력
print(solution(6, [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]]))
      
Leave a comment