Q. 집합(set)의 모든 부분 집합(subset)들로 구성된 집합(power set)을 구하라
출처 : Cracking the Coding Interview - Q8.4
먼저 하나하나 적어보자.
P([1]) = [[], [1]]
P([1,2]) = [[], [1], [2], [1,2]]
P([1,2,3]) = [[], [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3]]
자세히 살펴보면 P(n)은 P(n-1)에 집합의 마지막 값을 하나 더 넣어준 것과 같다.
내 Python 코드
def subsets(nums: List[int]) -> List[List[int]]:
    subset = [[]]
        
    for num in nums:
        prevLength = len(subset)
        for i in range(prevLength):
            ss = subset[i][:]
            ss.append(num)
            subset.append(ss)
    return subset- Time complexity: O(n * 2^n)
- Space complexity: O(n * 2^n)
Leetcode 테스트 결과

'개발 > 알고리즘 | 자료구조' 카테고리의 다른 글
| [알고리즘, Python] 아나그램(Anagram) 묶기 (0) | 2022.08.15 | 
|---|---|
| [알고리즘, Python] Leetcode - 정렬된 두 배열을 합하는 문제(Merge Sorted Array) (0) | 2022.08.13 | 
| [자료구조] 트리 (Tree) - 트리의 정의와 종류 (이진트리 등) (0) | 2022.08.10 | 
| [알고리즘, Python] 정렬 2 - 퀵 정렬(Quick Sort) (0) | 2022.08.10 | 
| [알고리즘, Python] 정렬 1 - 병합 정렬(Merge Sort) (0) | 2022.08.10 |