[Refresh ! 코딩 테스트 / js] - 합승 택시 요금

정대만·2025년 3월 21일

문제해석

  • 사실 딱 보자마자 그냥 플로워셜 알고리즘으로 푸는구나를 알게되었다.
  • 하지만 나는 플로워셜 알고리즘이 중간단계를 걸처서 푸는거는 알고 있었지만 만약 중간단계 가기전에 길이 여러개 라면 즉 s - [] -[] - 중간 이렇게라도 풀수 있는지 .. 검색해보았다.
  • 당연히 되는거였는데 그동안 문제에서는 한단계식만 가는거여서 안된다고 생각했다. 😂😂😂😂

나의 코드

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) 을 그냥 가는게 빠른지로 변경하였다.
profile
안녕하세요

0개의 댓글