https://school.programmers.co.kr/learn/courses/30/lessons/42861
import java.util.Arrays;
class Solution {
int[] parents;
public int solution(int n, int[][] costs) {
int answer = 0;
Arrays.sort(costs, ((o1, o2) -> o1[2] - o2[2]));
parents = new int[n];
for (int i = 0; i < n; i++) {
parents[i] = i;
}
for (int[] edge : costs) {
int str = edge[0];
int dest = edge[1];
int cost = edge[2];
int strParent = findParent(str);
int destParent = findParent(dest);
if (strParent == destParent)
continue;
answer += cost;
parents[destParent] = strParent;
}
return answer;
}
int findParent(int node) {
if (parents[node] == node)
return node;
return parents[node] = findParent(parents[node]);
}
}