Written by
최태열
on
on
[Python][프로그래머스][Level3] 배달
[Python][프로그래머스][Level3] 배달
코드
import queue
def solution(N, road, K):
length=[1000000]*(N+1)
length[1]=0
road_dict=dict()
for start,end,leng in road:
if start in road_dict:
road_dict[start].append([end,leng])
else:
road_dict[start]=[[end,leng]]
if end in road_dict:
road_dict[end].append([start,leng])
else:
road_dict[end]=[[start,leng]]
q=queue.Queue()
q.put(1)
while q.qsize():
start=q.get()
for end,cost in road_dict[start]:
if length[end]>length[start]+cost:
length[end]=length[start]+cost
q.put(end)
answer=0
for i in length[1:]:
if i <=K:
answer+=1
return answer
각 마을에 도달하는 최단 거리를 구해서 배달가능 여부를 구하는 문제이다.
그래프로 배열을 많이 사용하지만 딕셔너리로 구현했다.
road_dict의 key는 시작점이고 value는 [도착점, 거리]로 이루어진 배열이다.
이렇게 road_dict를 구성하고
queue를 활용해 bfs를 했다.
Discussion and feedback