# 연관 링크
- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5)
- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C)

# Problem
- 문제 링크 : https://leetcode.com/problems/combination-sum/
- 문제 이름 : Combination Sum
- 문제 번호 : 39
- 난이도 : Medium
- 카테고리 : DFS

# 문제 설명


# 아이디어
- 어떤 방법으로 접근했는지 서술
- 포스 vs 최적화 아이디어 차이 등
- 잡도에 대한 고려

# ✅ 코드 (Solution)

### DFS(Brute Force)
```cpp
class Solution {
    vector<vector<int>> res;
public:
    void helper(vector<int> candidates, vector<int> container, int idx, int sum, int target){
        if(idx>=candidates.size()){
            return;
        }
        helper(candidates, container, idx+1, sum, target);
        container.push_back(candidates[idx]);
        int mdfiedSum = sum+candidates[idx];
        if(mdfiedSum==target){
            res.push_back(container);
            return;
        }else if(mdfiedSum>target){
            return;
        }

        helper(candidates, container, idx, mdfiedSum, target);
    }

    vector<vector<int>> combinationSum(vector<int>& candidates, int target){
        res = vector<vector<int>>();
        helper(candidates, vector<int>(), 0, 0, target);
        return res;
    }
};
```


# 🔍 코드 설명


# 최적화 포인트 (Optimality Discussion)
- helper 함수에서 mdfiedSum을 사용하거나, 혹은 인자로 sum을 받지 않고 깎아나가는 방식으로 처리하면 일부 최적화 할 수 있음.
  - 취향 정도로 봐도 무방할듯

# 🧪 테스트 & 엣지 케이스

# 📚 관련 지식 복습

# 🔁 회고


