less than 1 minute read

Subsets - LeetCode

문제 파악

주어진 숫자 리스트 nums 의 모든 부분집합을 생성

접근 방법

백트래킹을 사용하여 부분집합을 생성

  1. 현재 인덱스부터 시작하여 숫자를 하나씩 추가하고 재귀적으로 백트래킹 수행
  2. 각 단계에서 현재 부분집합을 결과 리스트에 추가
  3. 재귀 호출이 종료되면 선택한 숫자를 현재 부분집합에서 제거

코드 구현

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        def backtrack(start, curr):
            ans.append(curr[:])
            
            for i in range(start, len(nums)):
                curr.append(nums[i])
                backtrack(i + 1, curr)
                curr.pop()
        
        ans = []
        backtrack(0, [])
        return ans

배우게 된 점

Leave a comment