[프로그래머스] 배달

dev-log·2022년 3월 30일
import heapq

def dijackstra(graph,distance):
    q=[]
    heapq.heappush(q,(0,1))
    distance[1]=0
    while q:
        dist,now=heapq.heappop(q)
        if distance[now]<dist:
            continue
        for i in graph[now]:
            cost=dist+i[1]
            if cost<distance[i[0]]:
                distance[i[0]]=cost
                heapq.heappush(q,(cost,i[0]))
        
def solution(N, road, K):
    answer = 0
    graph=[[] for _ in range(N+1)]
    distance=[float('inf')]*(N+1)
    for r in road:
        a,b,c=r
        graph[a].append((b,c))
        graph[b].append((a,c))
    dijackstra(graph,distance)
    
    for i in range(1,N+1):
        if distance[i]<=K:
            answer+=1
    return answer
profile
배운 걸 기록하는 곳입니다.

0개의 댓글