문제링크 : https://programmers.co.kr/learn/courses/30/lessons/42861
import java.util.*;
class Solution {
public static int par[];
public static int find(int x){
if(par[x] == x) return x;
return par[x] = find(par[x]);
}
public static void union(int a,int b){
int x = find(a);
int y = find(b);
if(x!=y){
par[y] = x;
}
}
public static int solution(int n, int[][] costs) {
int answer = 0;
par = new int[n];
for(int i=0;i<n;i++){
par[i] = i;
}
Arrays.sort(costs, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[2] - o2[2];
}
});
int cnt = 0;
for(int i=0;i<costs.length;i++){
int a = costs[i][0];
int b = costs[i][1];
if(find(a)!=find(b)){
union(a,b);
answer+=costs[i][2];
cnt++;
if(cnt==n-1) return answer;
}
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 모두 0으로 만들기 / JAVA (0) | 2022.02.18 |
---|---|
[프로그래머스] 징검다리 건너기 / JAVA (0) | 2022.02.18 |
[프로그래머스] 여행경로 / JAVA (0) | 2022.02.18 |
[프로그래머스] 단어 변환 / JAVA (0) | 2022.02.18 |
[프로그래머스] 등굣길 / JAVA (0) | 2022.02.18 |