각 Node들의 좌표만 주어지기 때문에, 최소신장트리 알고리즘을 사용하려면,
(간선 거리, 해당 간선으로 연결되는 노드 1, 해당 간선으로 연결되는 노드 2) 형태를 Edges 배열에 담아야한다.
우리는 n개의 node좌표만을 받기 때문에, 2중 for문으로 모든 node들 사이의 거리를 측정한다면, n(n-1) / 2로, O(n^2)의 시간복잡도를 가지게 된다..... 메모리 복잡도 또한 비례하게 된다.
하지만, 어차피 최단 거리를 구하는 것이므로, 시간복잡도가 훨씬 적은 "정렬"을
1.x좌표 기준
2. y좌표 기준
3. z좌표 기준
으로 적용하면서,
이유 ? (a -> b 거리가 3, b -> c 거리가 4일 때,
그럴 바에, a -> b 간선과 b -> c 간선을 모두 취하면, 드는 비용은 같고, a와c만 연결되는 것이 아니라, b가 a,c 모두와 연결되기까지하기 때문이다.
백준 10828: 스택 (구현 / with Swift) (0) | 2023.09.13 |
---|---|
백준 4673: 셀프 넘버 (구현 / with Swift) (0) | 2023.09.13 |
백준 1904: 01타일 (Dynamic Programming / with Swift) (0) | 2023.09.11 |
백준 1940: 주몽 (Two Pointer / with Swift) (0) | 2023.09.11 |
백준 2623: 음악프로그램 (위상정렬Topology Sort / with Swift) (0) | 2023.09.08 |