Programmers 섬 연결하기

Updated:

Answer

import java.util.*;

class Solution {
    
    int[] parent;
    
    public int find(int child){
        if(parent[child] == child){
            return child;
        }else{
            return parent[child] = find(parent[child]);
        }
    }
    
    public int solution(int n, int[][] costs) {
        
        Arrays.sort(costs, (o1, o2) -> {
            return o1[2] - o2[2];
        });
            
        parent = new int[n];
        for(int i = 0; i < n; i++){
            parent[i] = i;
        }
        
        int answer = 0;
        for(int i = 0; i < costs.length; i++) {
            int firstIsland = find(costs[i][0]);
            int secondIsland = find(costs[i][1]);
            
            if(firstIsland != secondIsland) {
                if(firstIsland < secondIsland){
                    parent[secondIsland] = firstIsland;
                }else{
                    parent[firstIsland] = secondIsland;
                }
                answer += costs[i][2];                    
            }
        }
        return answer;
    }
    
}

Categories:

Updated: