์ด๋ฏธ ๋ฝ์ ๊ฑฐ ์ดํ๋ก๋ง ๋๋ฆฐ๋ค. [1,4]๋ [4,1]์ด๋ ๊ฐ์ผ๋ฏ๋ก
ย
for๋ฌธ์ ๋ฝ๋ ๊ฐ์๊ฐ ๋ง์์ง ๋ ๋๋ฌด ์ค์ฒฉ๋๋ฏ๋ก ์ฌ๊ท๋ก ๊ตฌํํด๋ณผ ์ ์๋ค.
idx๋ ํ์ฌ ์์น์ ๋ํ ์ ๋ณด๋ค.
s๊ฐ ์ ํ๋ ๊ฐ์์ธ๋ฐ s๊ฐ ์ฆ๊ฐํ๋ค๊ฐ r์ด ๋๋ฉด ์ถ๋ ฅํ๊ณ return๋๋ค.
์ฌ๊ท์ ์ผ๋ก ํธ์ถ๋ ๋๋ง๋ค ์ ํ๋ ๊ฐ์ s๋ฅผ ์ฆ๊ฐ์ํค๊ณ ํ์ฌ ์์น idx๋ฅผ 1 ์ฆ๊ฐ์ํจ๋ค.
idx๊ฐ ์ฆ๊ฐ๋์์ผ๋ i๊ฐ์ ํ ๋น๋์ด ๋ฐฐ์ด์ ๊ฐ์์์ idx๋ฅผ ๋บ ๊ฐ๋ณด๋ค ๊ฐ๊ฑฐ๋ ์์ ๋ ๊ทผ๋ฐ ์ด ๋ฒ์ ์ค์ ์ด ์ง๊ด์ ์ด์ง ์์์ ๋๋ ์๋์ฒ๋ผ ๊ตฌํํ์๋ค.
ย
function solution(n, m) {
let answer = [];
let tmp = Array.from({ length: m }, () => 0);
let input = [10, 20, 30, 40];
// * : ๋ ๋ฒจ์ด m์ด ๋๋ฉด ๋ฉ์ถค(m๊ฐ ๋ฝ์ ๊ฒ, m๊ฐ ๊ฐ์ง ๋ป์), s๋ 1~4
function DFS(L, s) {
if (L === m) {
answer.push(tmp.slice());
} else {
for (let i = s; i < n; i++) {
tmp[L] = input[i];
DFS(L + 1, i + 1);
}
}
}
DFS(0, 0);
console.log(answer);
return answer;
}
solution(4,2);
ย