티스토리 뷰

728x90
반응형

문제 요약

  • 알고리즘 분류: 다익스트라
  • 난이도: Gold5
  • 문제내용:
    • 시작점 부터 도착점까지의 최단거리를 구해라
 

1916번: 최소비용 구하기

첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그

www.acmicpc.net

문제풀이

   이번에는 문제 유형은 그래프 탐색중에 다익스트라 알고리즘 문제이다. 다익스트라 알고리즘 기본적인것을 묻기 때문에 자세한 설명은 여기서 참조하면된다. 풀이에 대한 설명은 다익스트라 알고리즘알면 풀수 있기때문에 따로 설명은 하지 않겠다.

Code

Python

import sys
import heapq
from collections import deque

input = sys.stdin.readline
INF = float('inf')

def dijkstra(start, end):
    distances = [INF] * (N + 1)
    distances[start] = 0
    queue = [(start, 0)]
    while queue:
        now_node, now_distance = heapq.heappop(queue)
        if now_distance > distances[now_node]: continue

        for node, weight in grape[now_node]:
            distance = now_distance + weight
            if distance < distances[node]:
                distances[node] = distance
                heapq.heappush(queue, (node, distance))
    return distances[end]
        

N = int(input())
grape = {i:[] for i in range(1, N + 1)}
for _ in range(int(input())):
    a, b , value = map(int, input().split())
    grape[a].append((b, value))

start, end = map(int, input().split())
print(dijkstra(start, end))
728x90
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[BAEKJOON]1504 특정한 최단 경로 - Python  (0) 2023.01.17
[BAEKJOON]1238 파티 - Python  (0) 2023.01.16
[BAEKJOON]15686 치킨 배달- Python  (0) 2023.01.12
[BAEKJOON]14502 연구소 - Python  (0) 2023.01.11
[BAEKJOON]16953 A → B  (0) 2023.01.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함