https://leetcode.com/problems/subsets/
주어진 리스트의 숫자에서 부분집합을 구하는 문제다.
완전탐색의 백트래킹을 통해서 가능한 모든 상황에 대해서 ans에 추가하고 이를 출력해준다.
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
ans = []
def backtracking(start, curr):
ans.append(curr[:])
for i in range(start, len(nums)):
curr.append(nums[i])
backtracking(i + 1, curr)
curr.pop()
backtracking(0, [])
return ans
어떤 상황에서 현재 상태를 추가하고 이를 통해 부분집합을 생성해야 하는지 생각해보게 되었으며 처음에는 nums 전체를 curr에 추가해서 오류가 있었는데 nums의 특정 요소를 하나씩 추가해야 하며 이에 관련된 중복된 요소의 추가에 대해서 생각해보게 되었다.