파이썬 알고리즘 인터뷰 문제 37번(리트코드 78번) Subsets
https://leetcode.com/problems/subsets/
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
result = [[]]
for num in nums:
for subset in result[:]:
result.append(subset[:] + [num])
return result
[]과 여기에 1 추가한 [], [1]를 만들고,[], [1]과 여기에 2 추가한 [], [1], [2], [1, 2]를 만들고 ... 해나가면 된다.class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
result = []
def helper(index, path):
if index == len(nums):
result.append(path[:])
return
helper(index + 1, path)
path.append(nums[index])
helper(index + 1, path)
path.pop()
helper(0, [])
return result
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
result = []
def helper(path, idx):
result.append(path[:]) # 습관적으로 종료 조건을 idx == len(nums)로 해서 못풀었음.
for i in range(idx, len(nums)):
path.append(nums[i])
helper(path, i + 1)
path.pop()
helper([], 0)
return result