π
νμ΄μ¬ μκ³ λ¦¬μ¦ μΈν°λ·°
μ± μ μ°Έκ³ νμ΅λλ€.
κ°λ₯ν λͺ¨λ μμ΄μ λ°νν©λλ€
λ΄κ° νμλ λ°©λ²μΌλ‘ tmp리μ€νΈμ 맀 λ¨κ³μ μ νκ°μ μ μ₯ν΄λκ³ λ€μ λ¨κ³ μ§ν μ tmp리μ€νΈμ μλ κ°λ§μ μ ννλλ‘ νλ€.
μ± μ λμ μλ κ²μ²λΌ 리μ€νΈμμ μ νν κ°μ μ μΈμν€λ©΄μ μ§ννλ λ°©λ²
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
def dfs(index):
if len(tmp) == len(nums):
cp = tmp[:] # νμ΄μ¬μ κ°μ²΄ μ°Έμ‘° νΉμ±μΌλ‘ μΈν΄ κΌ λ³΅μ¬λ₯Ό ν΄μ€μΌ νλ€.d
result.append(cp)
return
for i in range(len(nums)):
if nums[i] not in tmp:
tmp.append(nums[i])
dfs(i + 1)
tmp.pop()
result = []
tmp = []
dfs(0)
print(result)
return result
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
def dfs(elements):
if len(elements) == 0:
result.append(prev_elements[:])
for e in elements:
next_elements = elements[:]
next_elements.remove(e)
prev_elements.append(e)
dfs(next_elements)
prev_elements.pop()
result = []
prev_elements = []
dfs(nums)
return result