본문 바로가기
Algorithm/LEET CODE ( 파이썬 알고리즘 인터뷰)

[LEET CODE] 78. Subsets

by newnu 2021. 4. 9.
반응형

# Problem

Given an integer array nums of unique elements, return all possible subsets (the power set).

The solution set must not contain duplicate subsets. Return the solution in any order.

 

Constraints:

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10
  • All the numbers of nums are unique.

모든 부분 집합 출력하기

 

# My Answer

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        result=[[]]
        temp=[]
        def dfs(l):
            for i in range(len(l)):
                new=l[i:]
                new.remove(l[i])
                
                temp.append(l[i])
                dfs(new)
                result.append(temp[:])
                temp.pop()
        dfs(nums)
        return result

앞의 조합 문제에서 값을 하나씩 넣을 때마다 결과 리스트에 추가하기

 

# Solution 1 - 트리의 모든 DFS 결과

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        result = []

        def dfs(index, path):
            # 매 번 결과 추가
            result.append(path)

            # 경로를 만들면서 DFS
            for i in range(index, len(nums)):
                dfs(i + 1, path + [nums[i]])

        dfs(0, [])
        return result

 

반응형