ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 14284. [Python]간선 이어가기 2
    Python_알고리즘/Gold V 2024. 5. 8. 20:49

    1. 문제

     

    https://www.acmicpc.net/problem/14284

     

    2. 접근 방법

     

    • 시간 제한: 2초
    • 메모리 제한: 512MB
    • 다익스트라 알고리즘

     

    3. 파이썬 코드

     

    import sys
    import heapq
    
    input = sys.stdin.readline
    # 다익스트라 알고리즘
    def dijkstra(start):
        # q 초기화
        q = []
        # heapq 로 q 리스트 생성
        heapq.heappush(q,(0,start))
        # distance로 초기 시작점 0 으로 초기화
        distance[start] = 0
        # q 값이 존재할 경우 반복문 진행
        while q:
            # 거리, 현재 값으로 값을 뽑아냄
            dist, now = heapq.heappop(q)
            # 저장된 거리가 현재 값보다 작은 경우 다음 반복문
            if distance[now] < dist:
                continue
            # 연결된 (가중치, 노드값) 반복
            for i in graph[now]:
                # 비용에 현재 값 + 가중치 더해줌
                cost = dist + i[0]
                # 비용이 거리보다 작은 경우
                if cost < distance[i[1]]:
                    # 거리 값 갱신
                    distance[i[1]] = cost
                    # 비용과 노드 추가
                    heapq.heappush(q,(cost,i[1]))
    
    N, M = map(int,input().split())
    
    distance = [10 ** 9] *(N+1)
    graph = [[]for _ in range(N+1)]
    
    for _ in range(M):
        S,E,W = map(int,input().split())
        graph[S].append((W,E))
        graph[E].append((W,S))
    
    S,T = map(int,input().split())
    
    dijkstra(S)
    print(distance[T])

     

    4. 문제를 풀고난 후 생각

     

    • 문제 자체가 조금 어렵게 작성 돼있어서 이해하는 부분에서 어려움을 겪었다.
    • 단순히 해석하면 다익스트라 알고리즘을 돌리기만 하면 최소값이 나오기 때문에 다익스트라 알고리즘을 사용할 수 있는지를 묻는 문제였다.
    • 마지막 문장인 ' s와 t가 연결이 되는 시점의 간선의 가중치의 합이 최소가 되게 추가하는 간선의 순서를 조정할 때, 그 최솟값을 구하시오.' 부분에서 문장을 이해를 잘 하면 됐던 문제다.

     

    5. 문제를 푸는데 도움이 되는 지식

     

    • 다익스트라 알고리즘

    'Python_알고리즘 > Gold V' 카테고리의 다른 글

    12865. [Python]평범한 배낭  (0) 2024.06.05
    13549. [Python]숨바꼭질 3  (0) 2024.05.22
    7569. [Python]토마토  (0) 2024.04.25
    7682. [Python]틱택토  (0) 2024.04.17
    1456. [Python]거의 소수  (0) 2024.04.14

    댓글

Designed by Tistory.