728x90
반응형
https://www.acmicpc.net/problem/1916
1916번: 최소비용 구하기
첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그
www.acmicpc.net
정답 code
# 최소비용 구하기
import heapq
import sys
input = sys.stdin.readline
INT = int(1e9)
def dijkstra(start):
q = []
heapq.heappush(q,(0,start))
visit = [INT] * (n+1)
visit[start] = 0
while q:
dist, node = heapq.heappop(q)
if visit[node] >= dist:
for node_index, node_time in bus[node]:
time = node_time + dist
if visit[node_index] > time:
visit[node_index] = time
heapq.heappush(q,(time,node_index))
return visit
n = int(input())
m = int(input())
bus = [[] for _ in range(n+1)]
for _ in range(m):
s,e,t = map(int,input().split())
bus[s].append((e,t))
start,target = map(int,input().split())
result = dijkstra(start)
print(result[target])
solution
단순한 최단거리 문제다. 다익스트라를 이용하여 간단히 해결 할 수 있다.
골드 문제지만 다익스트라를 익혔다면 실버 정도로 생각되는 문제다.
다익스트라 알고리즘:
1. 출발노드 설정
2. 출발노드 기준으로 각 노드의 최소비용 저장
3. 방문하지 않은 노드중 비용이 가장 적은 노드 선택
4. 해당 노드에서 특정 노드로 가는 최단거리 확인후 갱신
5. 3~4 반복
728x90
반응형
'알고리즘 > 백준[baekjoon]' 카테고리의 다른 글
[baekjoon] 백준 1932 번 : 정수 삼각형 (by python 파이썬) (0) | 2022.08.25 |
---|---|
[baekjoon] 백준 1918번 : 후위 표기식 (by python 파이썬) 스택 stack (0) | 2022.08.24 |
[baekjoon] 백준 1865번 : 웜홀 (by python 파이썬) 벨만 포드(Bellman-Ford) 알고리즘 (0) | 2022.08.22 |
[baekjoon] 백준 1753번 : 최단경로 (by python 파이썬) 다익스트라 dijkstra (0) | 2022.08.19 |
[baekjoon] 백준 1629번 : 곱셈 (by python 파이썬) 수학, DAC(분할정복) (0) | 2022.08.19 |