-
[못풂/꼭 다시풀기/프로그래머스] 섬 연결하기코딩테스트 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; }
크루스칼 알고리즘과 합집합 찾기 알고리즘을 이용하여 풀 수 있는 문제였다. 꼭 다시 풀것,
'코딩테스트' 카테고리의 다른 글
[못풀었다/프로그래머스] 여행경로 (0) 2023.06.14 [릿코드] 228. Summary Ranges (0) 2023.06.14 [못풀었다/프로그래머스] 가장 먼 노드 (0) 2023.06.10 [릿코드/문제잘보기] 744. Find Smallest Letter Greater Than Target (0) 2023.06.09 [다시풀기/프로그래머스] 이분탐색 (0) 2023.06.09