250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++ KAKAO)합승 택시 요금 본문
728x90
반응형
programmers.co.kr/learn/courses/30/lessons/72413
코딩테스트 연습 - 합승 택시 요금
6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4
programmers.co.kr
플로이드 와샬을 이용.
거쳐가는 게 이득인 경우 값을 갱신하면서 진행.
마지막에는 모든 경로를 탐색하면서 제일 비용이 적게 드는 요금을 선택한다.
#include <string>
#include <vector>
#include <queue>
#include <iostream>
#include <climits>
using namespace std;
int solution(int n, int s, int a, int b, vector<vector<int>> fares) {
int answer = INT_MAX;
vector<vector<int>> fare(201, vector<int>(201, 99999999));
for(int i = 1; i <= n; i++){
fare[i][i] = 0;
}
for(int i = 0; i < fares.size(); i++){
int c = fares[i][0];
int d = fares[i][1];
int f = fares[i][2];
fare[c][d] = f;
fare[d][c] = f;
}
//플로이드 와샬
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
for(int k = 1; k <= n; k++){
fare[j][k] = min(fare[j][k], fare[j][i] + fare[i][k]);
}
}
}
for(int i = 1; i <= n; i++){
answer = min(answer, fare[s][i] + fare[i][a] + fare[i][b]);
}
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > KAKAO' 카테고리의 다른 글
(프로그래머스 JS KAKAO)오픈 채팅방 (0) | 2021.05.10 |
---|---|
(프로그래머스 c++ KAKAO)경주로 건설 (0) | 2021.03.18 |
(프로그래머스 c++ KAKAO)자물쇠와 열쇠 (0) | 2021.03.04 |
(프로그래머스 c++ KAKAO)순위 검색 (0) | 2021.03.03 |
(프로그래머스 c++ KAKAO)신규 아이디 추천 (0) | 2021.02.19 |