코딩테스트
[못풂/꼭 다시풀기/프로그래머스] 섬 연결하기
_서리__
2023. 6. 10. 23:29
const getParent = (parent,x)=>{
if(parent[x]===x) return x;
return parent[x] = getParent(parent,parent[x])
}
const unionParent = (parent,x,y) => {
const u1 = getParent(parent,x)
const u2 = getParent(parent,y)
if(u1<u2) parent[u2] = u1
else parent[u1] = u2
}
const finedParent = (parent,x,y)=>{
const u1 = getParent(parent,x)
const u2 = getParent(parent,y)
if(u1===u2) return true;
else return false;
}
function solution(n, costs){
let answer = 0;
const parent = [];
costs.sort((a,b)=>a[2]-b[2])
for(let i=0;i<n;i++){
parent.push(i);
}
costs.forEach((cost)=>{
if(!finedParent(parent,cost[0],cost[1])){
unionParent(parent,cost[0],cost[1])
answer+=cost[2]
}
})
return answer;
}
크루스칼 알고리즘과 합집합 찾기 알고리즘을 이용하여 풀 수 있는 문제였다. 꼭 다시 풀것,