https://programmers.co.kr/learn/courses/30/lessons/12978
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ฐฐ๋ฌ
5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4
programmers.co.kr
ํ์ด
์ ํ์ ์ธ ๋ค์ต์คํธ๋ผ ๋ฌธ์ ์ด๋ค.
๋ฑํ ํ์ด๊ณผ์ ์ ๋ํด ์ค๋ช
ํ ๊ฒ ์๋ค.
import heapq as h
def solution(N, road, K):
answer = 0
INF = 987654321
dist = [ INF for _ in range(N+1) ]
dist[1] = 0
edges = [ [] for _ in range(N+1) ]
for (fr, to, w) in road:
edges[fr].append((to, w))
edges[to].append((fr, w))
pq = []
for (to, w) in edges[1]:
h.heappush(pq,(w, 1, to))
while pq:
w, fr, to = h.heappop(pq)
if dist[fr] + w < dist[to]:
dist[to] = dist[fr] + w
for (tt, ww) in edges[to]:
h.heappush(pq,(ww,to,tt))
return len(list(filter(lambda x:x <= K,dist)))