플로이드-워셜 예제 - 1
문제 분석
모든 도시에 쌍과 관련된 최솟값을 찾아야하는 문제이다.
그래프에서 시작점을 지정하지 않고, 모든 노드와 관련된 최소 경로를 구하는 알고리즘이 바로 플로이드-워셜 알고리즘이다.
도시의 최대 개수가 100개로 매우 작은 편이므로
O(N^3)시간 복잡도의 플로이드-워셜 알고리즘으로 해결할 수 있다.
손으로 풀어보기
버스 비용 정보를 인접 행렬에 저장한다. 먼저 인접 행렬을 초기화하는데, 연결 도시가 같으면(
i==j)0, 아니면 충분히 큰 수로 값을 초기화하면 된다. 그리고 주어진 버스 비용 데이터값을 인접 행렬에 저장한다.

플로이드-워셜 알고리즘을 수행한다. 점화식을 활용한 3중 for 문으로 모든 중간 경로를 탐색한다.

알고리즘으로 변경된 인접 행렬을 출력한다. 인접 행렬 자체가 모든 쌍의 최단 경로를 나타내는 정답 리스트이다.
슈도코드
코드 구현 - 파이썬
코드 구현 - 자바
Last updated