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

bej_ve·2022년 10월 26일
0

python알고리즘

목록 보기
35/46

<문제>
강철부대가 위치한 지역을 포함한 총지역의 수 n, 두 지역을 왕복할 수 있는 길 정보를 담은 2차원 정수 배열 roads, 각 부대원이 위치한 서로 다른 지역들을 나타내는 정수 배열 sources, 강철부대의 지역 destination이 주어졌을 때, 주어진 sources의 원소 순서대로 강철부대로 복귀할 수 있는 최단시간을 담은 배열을 return하는 solution 함수를 완성해주세요. 복귀가 불가능한 경우 해당 부대원의 최단시간은 -1입니다.

<코드>

from collections import deque

def solution(n, roads, sources, destination):
    visit=[-1]*(n+1)
    graph=[[] for _ in range(n+1)]
    for s,e in roads:
        graph[s].append(e)
        graph[e].append(s)
        
    queue=deque([destination])
    visit[destination]=0
    while queue:
        now=queue.popleft()
        
        for node in graph[now]:
            if visit[node]==-1:
                visit[node]=visit[now]+1
                queue.append(node)
                
    return [visit[i] for i in sources]

0개의 댓글