[백준] 11780 - 플로이드 2 (Python)
·
알고리즘 (PS)/BOJ
https://www.acmicpc.net/problem/11780 학교 알고리즘 분석 전공 수업시간에 배웠던 내용을 그대로 이용하면 쉽게 풀 수 있는 문제이다.플로이드 알고리즘은 dp 를 이용하는 방법으로, node 개수가 많지 않을 때 사용할 수 있는 알고리즘이다.시간복잡도는 node 개수가 n개 일 때, O(n³) 의 시간복잡도를 갖는다. 두 노드 a, b 사이의 최단거리 a, b 를 dist[a][b] 라고 할 때, dist[a][b] = min( for k in range 1 .. n, dist[a][k] + dist[k][b] ) 로 정의할 수 있다. 글로 정리하면, 두 노드 사이의 최단 거리는 그 노드 사이를 k 번 노드를 경유해서 갈 때 더 짧다면 그 값으로 갱신하는 과정을 거치면 된다...