Skip to content

Commit e8cef85

Browse files
committed
combination-sum 완료
1 parent a2d9e6a commit e8cef85

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

combination-sum/highball.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
const combinationSum = function (candidates, target) {
2+
const result = [];
3+
const path = [];
4+
5+
const dfs = function (candidate, residual) {
6+
if (residual < 0) return;
7+
8+
path.push(candidate);
9+
10+
if (residual === 0) {
11+
result.push([...path]); //그냥 path 넣어주면 뒤에서 path 바뀔 때 result에 들어간 path도 같이 바뀜
12+
path.pop();
13+
return;
14+
}
15+
16+
for (let i = 0; i < candidates.length; i++) {
17+
if (candidates[i] >= candidate)
18+
//작은 애들 빼주는 건 이미 앞에서 했을 것이므로 큰 애들만 빼주면 됨
19+
dfs(candidates[i], residual - candidates[i]);
20+
}
21+
22+
path.pop();
23+
};
24+
25+
for (let i = 0; i < candidates.length; i++) {
26+
//맨 처음에는 candidate이 없기 때문에 초기 조건 세팅할 때 candidate 넣어줘야 함
27+
dfs(candidates[i], target - candidates[i]);
28+
}
29+
30+
return result;
31+
};

0 commit comments

Comments
 (0)