728x90

너비우선탐색(BFS) 기법을 사용하여 1번 노드에서 각 노드까지의 최단 경로를 계산하여 visited에 딕셔너리 형태로 저장합니다. 그 후 가장 먼 노드의 경로와 같은 값을 갖고 있는 노드를 세서 반환합니다.

솔루션

from collections import defaultdict,deque

def solution(n, edge):
    answer = 0
    graph = defaultdict(list)
    for a,b in edge:
        graph[a].append(b)
        graph[b].append(a)

    visited= defaultdict(int)
    queue = deque([[1,0]])
    
    # BFS
    while queue:
        current_node,num = queue.popleft()   
        if current_node not in visited:
            visited[current_node] =num
            for adj_node in graph[current_node]: 
                if adj_node not in visited:
                    queue.append([adj_node,num+1])
    # 가장 먼 노드                
    distance = sorted(visited.values(), reverse=True)
    longest = distance[0]
    
    return distance.count(longest)
728x90

+ Recent posts