Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 3] 섬 연결하기 - 42861 본문

프로그래머스

[level 3] 섬 연결하기 - 42861

csct3434 2024. 3. 17. 15:56

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.*;

class Solution {

    private int[] parent;

    public int solution(int n, int[][] costs) {
        int answer = 0, count = 0, total = (n * n - n) / 2;
        parent = new int[n + 1];

        for (int i = 1; i <= n; i++) {
            parent[i] = i;
        }
        Arrays.sort(costs, Comparator.comparingInt(a -> a[2]));

        for (int[] cost : costs) {
            int px = find(cost[0]);
            int py = find(cost[1]);

            if (px != py) {
                union(px, py);
                answer += cost[2];
                if (++count == total) {
                    break;
                }
            }
        }

        return answer;
    }

    private void union(int x, int y) {
        if (x <= y) {
            parent[y] = x;
        } else {
            parent[x] = y;
        }
    }

    private int find(int x) {
        if (x == parent[x]) {
            return x;
        }
        return find(parent[x]);
    }
}