Skip to content

Commit 66d06d3

Browse files
committed
combination-sum solution
1 parent a272e08 commit 66d06d3

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

โ€Žcombination-sum/togo26.jsโ€Ž

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* @param {number[]} candidates
3+
* @param {number} target
4+
* @return {number[][]}
5+
*/
6+
7+
// C = candidates, T = target, m = smallest candidate value
8+
// TC: O(C^(T/m)) -> ํ›„๋ณด์™€ ํƒ€๊ฒŸ ๊นŠ์ด ๊ฐ„ ์ง€์ˆ˜์  ์ฆ๊ฐ€
9+
// SC: O(T/m) -> ์žฌ๊ท€ ์Šคํƒ ๊นŠ์ด (*์ถœ๋ ฅ ๊ฒฐ๊ณผ๋Š” ๋ณต์žก๋„ ๊ณ„์‚ฐ ์ œ์™ธ)
10+
var combinationSum = function (candidates, target) {
11+
const result = [];
12+
13+
function go(candi, combi, acc, start) {
14+
if (acc === target) {
15+
result.push(combi);
16+
return;
17+
}
18+
19+
for (let i = start; i < candi.length; i++) {
20+
const newAcc = acc + candi[i];
21+
const newCombi = [...combi, candi[i]];
22+
if (newAcc > target) break;
23+
go(candi, newCombi, newAcc, i);
24+
}
25+
}
26+
27+
go(
28+
[...candidates].sort((a, b) => a - b), // ๊ฐ’ ์ˆœ์„œ ๋ณด์žฅ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ˆ„์  ๊ฐ’์—์„œ ์กฐ๊ธฐ ์ข…๋ฃŒ ๊ฐ€๋Šฅ. ์˜ค๋ฆ„์ฐจ์ˆœ์— ๋”ฐ๋ผ newAcc๊ฐ€ target์„ ๋„˜์–ด๊ฐ€๋ฉด ์ดํ›„์˜ ํ›„๋ณด๋“ค์€ ๊ณ„์‚ฐํ•  ํ•„์š” ์—†์Œ.
29+
[],
30+
0,
31+
0,
32+
);
33+
34+
return result;
35+
};

0 commit comments

Comments
ย (0)