|
์ฝ๋ ์์ฑํ๊ธฐ
import heapq
INF = int(1e9)
def dijkstra(start, d, graph):
q = []
d[start] = 0
heapq.heappush(q, (0, start))
while q:
dist, now = heapq.heappop(q)
if d[now] < dist:
continue
for i in graph[now]:
cost = dist + i[1]
if cost < d[i[0]]:
d[i[0]] = cost
heapq.heappush(q, (cost, i[0]))
def solution(N, road, K):
graph = [[] for _ in range(N+1)]
d = [INF] * (N+1)
for m in road:
graph[m[0]].append((m[1], m[2]))
graph[m[1]].append((m[0], m[2]))
dijkstra(1, d, graph)
result = [1]
for i in range(2, N+1):
if d[i] <= K:
result.append(i)
return len(result)
Java
๋ณต์ฌ
|
์ฝ๋ ์ค๋ช
ํ๊ธฐ
โข
ํ๋์ ๋
ธ๋์์ ๋ค๋ฅธ ๋
ธ๋๋ก ๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ๋ ๋ค์ต์คํธ๋ผ๋ก ํผ๋ค๊ณ ์คํฐ๋์์ ํฌ์ ๋์๊ฒ ๋ฐฐ์ ์ต๋๋ค.
โข
road (๋๋ก์ ์ ๋ณด)๋ฅผ ๋ฐ์์ graph๋ฅผ ๋ฆฌ์คํธ ํํ๋ก ๋ง๋ค์ด์ค๋๋ค. ์ด๋ ์๋ฐฉํฅ์ผ๋ก ๊ฐ ์ ์๋ค๊ณ ํ์ฌ์ ๋๋ก์ ์์๊ณผ ๋์ ๋ฐ๊ฟ์๋ ์
๋ ฅํ์ต๋๋ค.
(ํ ๋ฐฉํฅ๋ง ์
๋ ฅํ๋ ์์ ๋ ํต๊ณผํ์ง ๋ชปํ์๋ค.)
โข
๋ค์ต์คํธ๋ผ๋ก ์ป์ ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ์ต๋ ์๊ฐ ์ดํ์ธ ๋
ธ๋๋ง ๋ฐฐ์ด๋ก ๋ง๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ฐํํ์๋ค.