December 02, 2025
μ«μλ€μ΄ μ£Όμ΄μ§λ©΄ κ·Έ μ«μλ€λ‘ λ§λ€ μ μλ λͺ¨λ μμ΄μ λ°ννλ λ¬Έμ λ€.
μ΄ λ¬Έμ λ λ°±νΈλνΉ(Backtracking) κΈ°λ²μ μ¬μ©νμ¬ ν΄κ²°ν μ μμ΅λλ€. μ£Όμ΄μ§ μ«μλ€λ‘ λ§λ€ μ μλ λͺ¨λ μμ΄μ μ¬κ·μ μΌλ‘ μμ±ν©λλ€.
ν΅μ¬: νμ¬ κ²½λ‘μ ν¬ν¨λμ§ μμ μ«μλ€μ μ ννμ¬ μ¬κ·μ μΌλ‘ νμν΄μΌ νλ€.
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
res = []
def backtrack(path, visited):
if len(path)==len(nums):
res.append(path)
return
for num in nums:
if num not in visited:
visited.add(num)
backtrack(path+[num], visited)
visited.remove(num)
backtrack([], set())
return res
O(k * k!) ; kλ numsμ κΈΈμ΄μ
λλ€. λͺ¨λ μμ΄μ κ°μλ k!μ΄κ³ , κ° μμ΄μ μμ±νλ λ° O(k)μ μκ°μ΄ μμλ©λλ€.O(k) ; μ¬κ· νΈμΆ μ€νκ³Ό λ°©λ¬Έ μ§ν©μ μ¬μ©λλ 곡κ°μ
λλ€.Constraints:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
All the integers of nums are unique.