재귀 한번에 idx 번째 숫자를 넣을 수 있을 때까지 넣는 방식으로 풀려 했음
- 왜 이렇게 안풀리는지 다시 해봐야 함
한번의 재귀에서 하나의 행동만 하기
- j 번째 숫자를 넣어본다
- j 번째 숫자를 여러개 넣고싶다면 다음단계로 넘어가서 해당 동작 수행
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
outputs = []
def backtrack(remain, comb, start):
if remain == 0:
# copy !
outputs.append(comb[:])
return
elif remain < 0:
return
for i in range(start, len(candidates)):
comb.append(candidates[i])
backtrack(remain - candidates[i], comb, i)
comb.pop()
return
backtrack(target, [], 0)
return outputs