[leetcode] - 39

Jisung Park·2021년 4월 5일
0
  • 재귀 한번에 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
               

0개의 댓글

관련 채용 정보