[leetcode] 46. Permutations

Youn·2021년 8월 19일
0

Algorithm

목록 보기
15/37

문제 설명

링크
순열 구하는 코드

접근 1 - permutation module

  • itertools.permutations

코드 1

   def permute(self, nums: List[int]) -> List[List[int]]:
        return list(itertools.permutations(nums))

접근 2 - code with CHECK

  • 재귀함수를 통해 직접 순열 코드 구현
  • check 배열을 통해 중복 방지
  • 시간은 1번과 같게 나옴

코드 2

    def permute(self, nums: List[int]) -> List[List[int]]:
        ans = []
        def dfs(arr, check):
            if len(arr) == len(nums):
                ans.append(arr)
                return
            for i in range(len(nums)):
                if not check[i]:
                    check[i] = 1
                    dfs(arr + [nums[i]], check)
                    check[i] = 0
                
        dfs([], [0] * len(nums))
        
        return ans

접근 3 - code without CHECK

  • nums 배열 자체를 조작
     def permute(self, nums: List[int]) -> List[List[int]]:
        ans = []
        def dfs(per, arr):
            if len(per) == len(nums):
                ans.append(per)
                return
            for i in range(len(arr)):
                 dfs(per + [arr[i]], arr[:i] + arr[i+1:])

        dfs([], nums)
        
        return ans

profile
youn

0개의 댓글