더북(TheBook)

코드를 볼까요?

코드 13-5

    def weighted_union(self, i, j):
        """
        parameters i, j must be roots!
        if size[i] < size[j] then parent[i] = j
        """
        # abs(parent[i]) = size[i]
        # temp_cnt는 음수고 size[i] + size[j]
        temp_cnt = self.parent[i] + self.parent[j]

        # size[i] < size[j]
        if self.parent[i] > self.parent[j]:
            self.parent[i] = j
            self.parent[j] = temp_cnt
        # size[i] > size[j]
        else:
            self.parent[j] = i
            self.parent[i] = temp_cnt

코드 13-5는 weighted_union을 구현한 것입니다. 매개변수 i, j는 반드시 루트여야 합니다. 각 집합이 가진 노드 개수를 비교하여 노드 개수가 많은 집합에 노드 개수가 적은 집합을 자식으로 병합합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.