https://school.programmers.co.kr/learn/courses/30/lessons/132266
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드 & 풀이
from collections import deque
def solution(n, roads, sources, destination):
graph = [[] for _ in range(n + 1)]
for start, end in roads:
graph[start].append(end)
graph[end].append(start)
distances = [-1] * (n + 1)
distances[destination] = 0
que = deque([destination])
while que:
now = que.popleft()
for nxt in graph[now]:
if distances[nxt] == -1:
distances[nxt] = distances[now] + 1
que.append(nxt)
return [distances[i] for i in sources]
노드별 거리가 무조건 1이기에 그냥 bfs로 함
근데 출발지마다 bfs 돌면 중복 계산되니까 (처음에는 각각했음)
그냥 도착지에서 bfs를 돌아서 각 지점별 도달거리를 측정해서 반환했음
728x90
'프로그래머스 > Lv.3' 카테고리의 다른 글
억억단을 외우자 - Python (0) | 2025.02.21 |
---|---|
고고학 최고의 발견 - Python, product (1) | 2025.02.10 |
N으로 표현 - Python, DP (0) | 2024.11.22 |
네트워크 - Python, DFS, BFS, Union_find (0) | 2024.11.21 |
여행 경로 - Python, dfs, 히에로홀드 경로(Eulerian Path) (1) | 2024.11.20 |