
문제해석
나의 코드
function solution(n, s, a, b, fares) {
//어디서 내리니?
//내린다음에 택시를 타고 가는것이 더 싼가? 아니면 다이렉트로 가는것이 싼가를 계산하는 문제
// 내생각에는 플로워셔라고 생각하면 됨. 나는 그 길을 두번가면 게산을 못한다고 생각했는데 아님
let road_count= Array.from({length: n+1},()=>Array(n+1).fill(Infinity));
for (let i = 1; i <= n; i++) road_count[i][i] = 0;
for(var i=0; i<fares.length; i++){
let [start,end,count]=fares[i];
road_count[start][end]=count;
road_count[end][start]=count;
}
for(var aa=1; aa<=n; aa++){
for(var bb=1; bb<=n; bb++){
for(var cc=1; cc<=n;cc++){
road_count[bb][cc]= Math.min(road_count[bb][cc], road_count[bb][aa]+road_count[aa][cc])
}
}
}
//플로워셜 알고리즘으로 계산함
//s에서 시작 a와 b는 각자 감
let answer=road_count[s][a]+road_count[s][b];
for(var iii=1; iii<=n; iii++){
answer= Math.min(answer,road_count[s][iii]+road_count[iii][a]+road_count[iii][b])
}
return answer;
내가 틀린부분
- 처음에 코드를 풀었더니 null 이 return 되서 왜 인지 찾아보니까 for 문의 변수를 a,b,c 으로 지정해서 매개변수의 형태와 동일하게 됬기때문에 값이 이상하게 변했다.
- 문제에서도 주어진 . 그냥 가는게 빠른지 , 중간에 내려서 택시를 타는게 빠른지를 비교하는 문제이기 때문에 기준점 (answer) 을 그냥 가는게 빠른지로 변경하였다.