[프로그래머스] 부대복귀

박형진·2023년 1월 19일
0

https://school.programmers.co.kr/learn/courses/30/lessons/132266


1. 코드

from collections import defaultdict, deque


def solution(n, roads, sources, destination):
    answer = []

    graph = defaultdict(list)
    for u, v in roads:
        graph[u].append(v)
        graph[v].append(u)

    q = deque()
    q.append(destination)
    distance = defaultdict(int)
    visited = defaultdict(bool)
    visited[destination] = True
    while q:
        node = q.popleft()
        for u in graph[node]:
            if not visited[u]:
                visited[u] = True
                distance[u] = distance[node] + 1
                q.append(u)

    for source in sources:
        if source not in distance:
            answer.append(-1)
        else:
            answer.append(distance[source])

    return answer

2. 후기

BFS를 100,000번 실행 => 시간초과
BFS를 destination에서 한 번 실행 => 통과

profile
안녕하세요!

0개의 댓글