코딩테스트 연습 - 배달 | 프로그래머스 스쿨 (programmers.co.kr)
모범 답안
import heapq
def dijkstra(dist,adj):
queue = []
heapq.heappush(queue, [0,1])
while queue:
cost, node = heapq.heappop(queue)
for c,n in adj[node]:
if cost+c < dist[n]:
dist[n] = cost+c
heapq.heappush(queue, [cost+c,n])
def solution(N, road, K):
dist = [float('inf')]*(N+1)
dist[1] = 0
adj = [[] for _ in range(N+1)]
for r in road:
adj[r[0]].append([r[2],r[1]])
adj[r[1]].append([r[2],r[0]])
dijkstra(dist,adj)
return len([i for i in dist if i <=K])
import heapq
def dikjstra(start,distance,graph):
q = []
heapq.heappush(q, (0,start))
distance[start] = 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
INF = int(1e9)
distance = [INF] * (N+1)
graph = [[] for _ in range(N+1)]
for a,b,c in road:
graph[a].append((b,c))
graph[b].append((a,c))
dikjstra(1,distance,graph)
for i in range(1,N+1):
if distance[i]<=K:
answer += 1
return answer
참조
[프로그래머스] 배달 / python 파이썬 (tistory.com)
[프로그래머스] 배달 / python 파이썬
🌝 Summer/Winter Coding(~2018) 문제 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 program
jennnn.tistory.com