Skip to content

Commit 53f84f7

Browse files
committed
Combination Sum solution
1 parent 4b659e7 commit 53f84f7

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ํ•ฉ์ด target์ด ๋˜๋Š” ๋ชจ๋“  ์กฐํ•ฉ ์ฐพ๊ธฐ
3+
* ๋ฌธ์ œ ํŠน์ง•: ๊ฐ™์€ ์ˆซ์ž๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
4+
*
5+
* ๋ฐฑํŠธ๋ž˜ํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜: ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ์‹œ๋„ํ•ด๋ณด๋‹ค๊ฐ€, ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์ด์ „ ๋‹จ๊ณ„๋กœ ๋˜๋Œ์•„๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰
6+
* ์‹œ๊ฐ„๋ณต์žก๋„: O(N^T) (N: candidates ๋ฐฐ์—ด์˜ ๊ธธ์ด, T: target)
7+
*/
8+
9+
/**
10+
* @param {number[]} candidates
11+
* @param {number} target
12+
* @return {number[][]}
13+
*/
14+
var combinationSum = function (candidates, target) {
15+
const result = [];
16+
17+
/**
18+
* start: ํ˜„์žฌ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•  ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค
19+
* target: ๋‚จ์€ ๋ชฉํ‘œ ํ•ฉ๊ณ„
20+
* currCombination: ํ˜„์žฌ๊นŒ์ง€ ์„ ํƒํ•œ ์ˆซ์ž๋“ค์˜ ๋ฐฐ์—ด
21+
*/
22+
const backtrack = (start, target, currCombination) => {
23+
if (target === 0) {
24+
// target์„ ์ •ํ™•ํžˆ ๋งž์ถ˜ ๊ฒฝ์šฐ(target์ด 0์ธ ๊ฒฝ์šฐ) result์— ์ถ”๊ฐ€
25+
result.push([...currCombination]);
26+
return;
27+
}
28+
if (target < 0) {
29+
// target์ด 0๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ ๋น ๋ฅธ ์ข…๋ฃŒ
30+
return;
31+
}
32+
for (let i = start; i < candidates.length; i++) {
33+
currCombination.push(candidates[i]); // ํ˜„์žฌ ์ˆซ์ž ์ถ”๊ฐ€
34+
backtrack(i, target - candidates[i], currCombination); // ์žฌ๊ท€ ํ˜ธ์ถœ๋กœ ๋‹ค์Œ๋‹จ๊ณ„ ์ง„ํ–‰
35+
currCombination.pop(); // ํ˜„์žฌ ์ˆซ์ž ์ œ๊ฑฐ (๋ฐฑํŠธ๋ž˜ํ‚น) ํ›„ ๋‹ค์Œ ์ˆซ์ž ํƒ์ƒ‰
36+
}
37+
};
38+
backtrack(0, target, []); // ์ดˆ๊ธฐ ํ˜ธ์ถœ(๋ฐฑํŠธ๋ž˜ํ‚น ์‹œ์ž‘)
39+
return result;
40+
};

0 commit comments

Comments
ย (0)