Programmers

[프로그래머스 / 파이썬 풀이] 가장 먼 노드

Hoo_Dev 2023. 1. 10. 11:19
from collections import deque

def solution(n, edge):
    answer = 0
    graph = [[] for _ in range(n+1)]
    visited = [0] * (n+1)
    q = deque()

    for i in edge:
        graph[i[0]].append(i[1])
        graph[i[1]].append(i[0])

    q.append(1)
    visited[1] = 1
    while q:
        n = q.popleft()
        for j in graph[n]:
            if visited[j] == 0:
                visited[j] = visited[n] + 1
                q.append(j)
            
    answer = visited.count(max(visited))
    return answer

처음엔 dfs로 시도 했다가 실패.

bfs를 통해 방문 배열 카운트로 풀이 했다.

bfs를 순회하면서 본인 노드의 바로 전 노드의 방문배열에 +1을 하면서 순회를 하면 가장 높은 방문배열을 가지는 값이 1과 가장 먼 노드가 된다.