Skip to content

Commit b3066e1

Browse files
committed
feat: combination-sum풀이
1 parent 8c6fde3 commit b3066e1

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

combination-sum/youngduck.js

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* @param {number[]} candidates
3+
* @param {number} target
4+
* @return {number[][]}
5+
*/
6+
var combinationSum = function (candidates, target) {
7+
// 작은숫자 부터 더해서, 더 큰 숫자를 더해볼필요없이 미리 리턴시키기위한용도, 중복값도 방지가능
8+
candidates.sort();
9+
const result = [];
10+
11+
const sumArr = (arr) => {
12+
if (arr.length === 0) return 0;
13+
else {
14+
const sum = arr.reduce((acc, cur) => acc + cur);
15+
16+
return sum;
17+
}
18+
};
19+
20+
const backtrack = (targetArr, startIndex) => {
21+
const sumData = sumArr(targetArr);
22+
23+
if (sumData === target) {
24+
result.push([...targetArr]);
25+
return;
26+
}
27+
28+
for (let i = startIndex; i < candidates.length; i++) {
29+
if (sumData < target) {
30+
backtrack([...targetArr, candidates[i]], i);
31+
} else if (sumData > target) {
32+
continue;
33+
}
34+
}
35+
};
36+
37+
// 백트랙킹 방식으로 풀예정 (재귀)
38+
// target보다 작을경우 계속 더함. 클경우 재귀멈춤 backtrack인수에
39+
// targetArr만줬더니 result에 중복값이 생김. ex) 7을만들때[2,2,3],[2,3,2]같은 중복생김
40+
// 자기자신 이상의 index를 타게하기위해서 startIndex
41+
backtrack([], 0);
42+
43+
return result;
44+
};

0 commit comments

Comments
 (0)