2023년 06월 04일 일요일 - 낚시가 안된다~~


오늘 올려볼 문제는 547번 Number of Provinces 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

오랜만에 빨리 푼듯.. ㅋㅋㅋㅋ


입력


사진에서도 볼 수 있듯이 2차원 int 배열이 입력으로 들어온다.



풀이 및 코드


도시들의 연결정보가 주어졌을 때 각 집합의 개수가 몇개인지 구하는 문제이다.


오늘은 처음부터 정답을 생각해냈다.

union find를 활용해서 문제를 풀었다.


이제 코드를 봐보자!


풀이코드

class Solution {
    public int findCircleNum(int[][] isConnected) {
        int n = isConnected.length;
        var arr = new int[n];
        for(int i = 0; i < n; i++) arr[i] = i;
        
        for(int i = 0; i < n; i++) {
            for(int j = i + 1; j < n; j++) {
                if(isConnected[i][j] == 1) {
                    int a = find(arr, i), b = find(arr, j);
                    
                    if(a < b) arr[b] = a;
                    else arr[a] = b;
                }
            }
        }
        
        var set = new HashSet<Integer>();
        for(int i = 0; i < n; i++) set.add(find(arr, i));
        
        return set.size();
    }
    
    private int find(int[] arr, int n) {
        if(arr[n] == n) return n;
        
        return arr[n] = find(arr, arr[n]);
    }
}




제출 화면

leetcode 문제 맞았습니다


오랜만에 정석같은 문제가 나와서 안틀리고 바로 풀 수 있었던 것 같다.


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.

+ Recent posts