문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/132266
문제 풀이)
BFS를 이용해 해결할 수 있다.
발상을 뒤집어서 destination을 출발지점으로 선택해 역으로 탐색하면서 부대가 위치하 지점까지 도달할 수 있는지를 탐색하면 된다.
도달할 수 없는 경우도 있으므로 visit list를 -1로 초기화 시킨다. 이후 BFS를 수행하면 된다.
from collections import deque
def solution(n, roads, sources, destination):
graph = [[] for _ in range(n + 1)]
visit = [-1] * (n + 1)
for x, y in roads:
graph[x].append(y)
graph[y].append(x)
visit[destination] = 0
q = deque([destination])
while q:
now = q.popleft()
for next in graph[now]:
if visit[next] == -1:
visit[next] = visit[now] + 1
q.append(next)
return [visit[i] for i in sources]
'Algorithm' 카테고리의 다른 글
[프로그래머스 - lv1, 2018 KAKAO BLIND RECRUITMENT] - [1차] 비밀지도 (0) | 2023.03.03 |
---|---|
[프로그래머스 - lv1, 2020 카카오 인턴십] 키패드 누르기 (0) | 2023.02.27 |
[프로그래머스-lv2] 우박수열의 정적분 (0) | 2023.02.23 |
[프로그래머스-lv2]디펜스 게임/파이썬 (0) | 2023.02.22 |
[프로그래머스 - lv2] 숫자 변환하기 / 파이썬 (0) | 2023.02.21 |