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 |