🤔 나의 풀이
📌 문제
- 파이썬 알고리즘 인터뷰 37번 문제
📌 날짜
2020.02.05
📌 시도 횟수
1 try
💡 Code
class Solution:
def subsets(self, nums: List[int]) -> List[List[int]]:
def dfs(index, path):
result.append(path)
if len(path) == len(nums):
return
for i in range(index, len(nums)):
dfs(i + 1, path + [nums[i]])
result = []
dfs(0, [])
return result
💡 문제 해결 방법
- 기본적으로 조합을 구하는 dfs 방법 틀을 사용했다. (이전 게시물 35. Combinations 참고)
- 다만 result.append(path)를 종료 조건 밖으로 빼서 종료 조건 이전에 실행하도록 함으로써
모든 부분 집합을 result에 담는 방법을 사용했다.
- 조합을 구하는 dfs를 잘 이해한다면 정말 쉬운 문제였다.
💡 새롭게 알게 된 점
- 이렇게 path를 부모 함수로 빼서 사용하지 않고 dfs 내부에서 전달하는 형태로
사용하니까 더 편한 것 같다. for문 마지막에 pop할 필요도 없어서 더 깔끔한 것 같다.
- 선생님 코드랑 처음으로 똑같이 풀었다. 기분이 넘 좋다~~😍
❌ (한번에 맞추지 못한 경우) 오답의 원인
-