Skip to content

Commit bb1b12e

Browse files
committed
3주차 문제 풀이 1개 추가
- Combination Sum
1 parent 42be3de commit bb1b12e

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

combination-sum/hwi-middle.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
4+
vector<vector<int>> res;
5+
vector<int> v;
6+
7+
solve(candidates, target, v, 0, res, 0);
8+
return res;
9+
}
10+
11+
/**
12+
* @param candidates 사용할 수 있는 수의 후보
13+
* @param target candidates의 원소들을 사용해 만들어야하는 합계
14+
* @param cur 지금까지 시도한 조합
15+
* @param sum 사전에 계산된 cur 원소들의 합계
16+
* @param res 최종 결과
17+
* @param idx 현재까지 진행된 인덱스 (중복 방지를 위해 존재)
18+
*/
19+
void solve(const vector<int>& candidates, const int target, vector<int>& cur, int sum, vector<vector<int>>& res, int idx)
20+
{
21+
if (sum > target)
22+
{
23+
return;
24+
}
25+
26+
if (sum == target)
27+
{
28+
res.push_back(cur);
29+
return;
30+
}
31+
32+
int len = candidates.size();
33+
for (int i = idx; i < len; ++i)
34+
{
35+
int c = candidates[i];
36+
cur.push_back(c);
37+
solve(candidates, target, cur, sum + c, res, i);
38+
cur.pop_back();
39+
}
40+
}
41+
};

0 commit comments

Comments
 (0)