06.20에 푼 문제입니다.🌷
섬 연결하기
Find-Union 알고리즘을 사용했다.
costs 에서 비용이 작은 것부터 오름차순으로 정렬한다.
cycle table을 만들어서 index값을 배열에 넣는다.
ex) n=5 [0,1,2,3,4]
Find-Union 알고리즘
배열 내에 모든 값이 동일하면 모든 섬을 방문한 것이므로 중단한다!
function solution(n, costs) {
var answer = 0;
costs.sort((a,b)=>a[2]-b[2])
let table = []
for(let i=0;i<n;i++) table.push(i)
for(let cost of costs){
if(cost[0]>cost[1]){
let tmp=cost[0]
cost[0]=cost[1]
cost[1]=tmp
}
if(table[cost[1]]===table[cost[0]]) continue
let des = table[cost[0]]
let go = table[cost[1]]
for(let i=0;i<n;i++){
if(table[i]===go){
table[i]=des}
}
answer+=cost[2]
const tableset=new Set(table)
if(tableset.size===1) break
}
return answer;
}