다차원 배열 정렬과 크루스칼 알고리즘을 사용하는 문제이다.
다차원 배열 정렬하는법
var costs = [[1, 2, 3], [1, 2, 3], [2, 3, 4]]
// a[n] - b[n] => 배열의 n 을 기준으로 정렬한다.
costs.sort((a, b) => {
return a[2] - b[2];
})
다음은 전체 코드이다.
function solution(n, costs) {
var answer = 0;
var parent = [];
for(let i = 0; i < n; i++){
parent.push(i);
}
costs.sort((a, b) => {
return a[2] - b[2];
})
var cnt = 0;
for(let i = 0; i < costs.length; i++){
var a = find(parent, costs[i][0]);
var b = find(parent, costs[i][1]);
var l = costs[i][2];
if(a != b){
if(a < b){
parent[b] = a;
}else{
parent[a] = b;
}
cnt++;
answer += l;
}
if(cnt == n - 1){
break;
}
}
return answer;
}
function find(parent, a){
if(parent[a] === a){
return a;
}
return parent[a] = find(parent, parent[a]);
}
'프로그래머스' 카테고리의 다른 글
프로그래머스_스킬트리_자바 (0) | 2020.05.17 |
---|---|
프로그래머스_124 나라의 숫자_JAVA (0) | 2020.05.17 |
프로그래머스_입국심사_JAVASCRIPT (0) | 2020.05.07 |
프로그래머스_H-index (0) | 2020.05.07 |
프로그래머스_탑 (0) | 2020.05.07 |