1. 프로그래머스 합승택시요금
1.1. 컴퓨팅적 사고
플로이드워셜알고리즘을 이용한 최단경로 문제
- (1) 모든 맵에 지점의 개수 * 택시비용의 최댓값인 (100 * 200000)으로 값을 초기화해줍니다.
- (2) 자기자신을 바라보는것들은 0으로 초기화합니다
- (3) 배열값을 복사하여 배열들의 값을 재 세팅을 해줍니다.
- (4) 플로이드워셜알고리즘의 점화식을 도출해냅니다. graph[i][j] = Math.min(graph[i][j], graph[i][k] + graph[k][j])
- (5) 점화식으로 도출해낸 모든 비용의 배열에서 출발지점 -> (모든지점을 탐색의 비용 + 모든지점의 탐색 -> A의 도착의 비용 + 모든지점의 탐색 -> B의 도착의 비용)의 최솟값을 구해줍니다.
- (6) 결국, 시작점에서 출발하여 거쳐간 지점중에 + A도착점 + B도착점의 최솟값을 탐색을 하게 되면 모든 최단 경로의 비용을 구할 수 있게 됩니다.
- (7) 시간복잡도 O(N^3)
1.2. 소스코드
1 | public class programmers_합승택시요금_kgh { |