학습 페이지
www.inflearn.com
문제 : https://leetcode.com/problems/network-delay-time/
# 접근 방법
목적지와 도착지가 있고 가는데 필요한 비용이 주어져있으므로 가중치 그래프를 활용한 문제인 것과 다익스트라 알고리즘을 적용해야 겠다는 생각이 들어야 한다.
다익스트라
모든 노드를 돌았을 때 최소 값을 출력 -> 최소 비용 중 가장 높은 것 출력(Output) 해야 한다.
# 코드 설계
- 그래프 구현
- 다익스트라 알고리즘
- 방문 못한 노드 찾기
- 최소값 중 최대값 찾기
이 순서로 코드 구현을 한다.
코드 구현 전, 실행 시간 초과 되는지 검증해보기
# 시간 복잡도 계산
- 그래프 구현
times 의 길이만큼 6000이하 이니 생략 무방
-다익스트라 알고리즘
edge 의 갯수만큼 push, pop (O(logn)) 발생 = O(ElognE) E = 는 edge의 갯수
결국 6000xlog6000 = 약 13
- 방문 못한 노드 찾기
O(n)
- 최소값중에서 최대값 구하기
O(n)
대략 계산한 결과 시간복잡도상 이상이 없을 것을 확인하였다.
# 코드 구현
가중치 그래프를 구현하는 코드를 작성 후
이전에 배웠던 다익스트라 알고리즘 템플릿을 그대로 작성하였다.
이 코드를 이제 문제에 맞게 변형 해보자
1. 방문 못한 노드가 있는 지 판별하는 for문 추가
2. return 시 최대값을 찾는 코드 추가
모든 비용들 중에 가장 큰 값 리턴
'파이썬 > 다익스트라' 카테고리의 다른 글
특정한 최단거리 (골드 4) (0) | 2023.10.30 |
---|---|
최단 경로 함수 풀이 (골드4) (1) | 2023.10.27 |
백준 최단경로 (골드4) (0) | 2023.10.26 |
다익스트라 Dijkstra (0) | 2023.10.26 |
Heap 힙 개요 (0) | 2023.10.24 |