본문 바로가기

Coding Test/Programmers

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

728x90

 

 

 

 

 

나의 풀이

from collections import deque

def solution(n, edge):
    graph = [[] for _ in range(n)]
    answer, prev = 1, 0
    queue = deque([0])
    visited = set()
    depth = [0 for _ in range(n)]

    for i, j in edge:
        graph[i - 1].append(j - 1)
        graph[j - 1].append(i - 1)

    while queue:
        node = queue.popleft()
        visited.add(node)
        for v in graph[node]:
            if v not in visited:
                if not depth[v]:
                    depth[v] = depth[node] + 1
                    queue.append(v)

    for d in depth:
        if prev < d:
            prev = d
            answer = 1
        elif prev == d:
            answer += 1

    return answer

 - 시간 초과 때문에 애먹음

 - list에서 in 연산과 set 에서 in 연산의 차이가 많이 난다.

 - visited를 list에서 set 으로 바꾸니 해결

반응형