[프로그래머스] 가장 먼 노드

박형진·2022년 1월 1일
0

https://programmers.co.kr/learn/courses/30/lessons/49189


1. 전체 코드

from collections import defaultdict, deque


def solution(n, edge):
    answer = 0
    visited = [False] * (n + 1)
    distance = defaultdict(int)
    graph = defaultdict(list)
    # 인접 리스트 방식
    for node in edge:
        graph[node[0]].append(node[1])
        graph[node[1]].append(node[0])
    q = deque()
    q.append(1)
    visited[1] = True
    distance[1] = 0
    while q:
        v = q.popleft()
        for w in graph[v]:
            if not visited[w]:
                visited[w] = True
                distance[w] = distance[v] + 1
                q.append(w)
    z = sorted(distance.items(), key=lambda x: -x[1])
    for i in z:
        if z[0][1] == i[1]:
            answer += 1
        else:
            break
    return answer

2. 후기

인접리스트 방식으로 변환하여 문제를 풀었다. DFS로 접근하면 최단거리를 구성하는게 쉽지 않다. BFS를 사용하면 큰 문제없이 풀 수 있다.

profile
안녕하세요!

0개의 댓글