๋ฌธ์
ํ์ด ๊ณผ์
์ค๋ณต ์กฐํฉ
์ ๋ง๋ค์ด์ ์ซ์๋ค์ ํฉ์ด target
์ด ๋๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค.
์ฌ๊ธฐ์ ์ค๋ณต ์กฐํฉ
์ด๋ ์๋ก ๋ค๋ฅธ n๊ฐ๋ฅผ ์ค๋ณต์ ํ์ฉํ์ฌ r ๊ฐ๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ
๋ฅผ ๋งํฉ๋๋ค.
์ด๋ฅผ ์ํด์๋ ๋ฐฑํธ๋ํน
์ ํ์ฉํด์ ๋ชจ๋ ์กฐํฉ์ ํ์ํด์ฃผ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
๊ธฐ์กด ์กฐํฉ์์๋ i ๋ฒ์ฉจ
์ซ์๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ ๊ทธ ๋ค์ ์ซ์์ธ i + 1 ๋ฒ์งธ
๋ถํฐ ํ๋์ฉ ๊ณจ๋ผ์ผํ์ง๋ง
์ค๋ณต์ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ํ ์์์ ์ i ๋ฒ์งธ
๋ถํฐ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์ฝ๋
/**
* @param {number[]} candidates
* @param {number} target
* @return {number[][]}
*/
var combinationSum = function (candidates, target) {
const answer = [];
function combination(start, sum, selected) {
if (sum > target) return;
else if (sum === target) answer.push(selected);
for (let i = start; i < candidates.length; i++) {
combination(i, sum + candidates[i], [...selected, candidates[i]]);
}
}
combination(0, 0, []);
return answer;
};
๋ฐ์ํ
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 240 - Search a 2D Matrix II (Medium) (0) | 2021.03.02 |
---|---|
LeetCode 155 - Min Stack (Easy) (0) | 2021.03.02 |
LeetCode 20 - Valid Parentheses (Easy) (0) | 2021.03.02 |
LeetCode 787 - Cheapest Flights Within K Stops (Medium) (0) | 2021.03.02 |
LeetCode 417 - Pacific Atlantic Water Flow (Medium) (0) | 2021.03.02 |
๐ฌ ๋๊ธ