728x90
๋ฐ์ํ
๐ 14 - ์กฐํฉ ๊ตฌํ๊ธฐ
1๋ถํฐ N๊น์ง ๋ฒํธ๊ฐ ์ ํ ๊ตฌ์ฌ์ด ์๋ค. ์ด ์ค M๊ฐ๋ฅผ ๋ฝ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
M๊ฐ๋ฅผ ๋ฝ๋๋ค๊ณ ํ์ผ๋ฏ๋ก ์กฐํฉ์ ์ด์ฉํด์ผ ํ๋ค. N์ด 4์ด๊ณ M์ด 2์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์โ
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด L1์ด ์ ํด์ง๋ฉด L2๋ L1 + 1๋ถํฐ N๊น์ง for ๋ฌธ์ ๋๋ฉด์ ์ ํด์ง๋ค.
๐ ํ์ด ๋ฐฉ๋ฒ
s๋ for๋ฌธ์์ ์ด๊ธฐ๊ฐ์ ํด๋นํ๋ค. ๋ค์๊ณผ ๊ฐ์ด ๊ทธ๋ฆผ์ผ๋ก ํ๋ฒ ์ดํดํ๊ณ ์ธ์ฐ๋๋ก ํ์(์ค์โ)
- L(๋ ๋ฒจ)์ด m๊ณผ ๊ฐ๋ค๋ฉด ํ๋์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ด๋ฏ๋ก tmp๋ฅผ ์์ ๋ณต์ฌ(slice)ํ์ฌ answer์ ์ถ๊ฐํ๋ค.
function solution(n, m) {
let answer = [];
let tmp = Array.from({ length: m }, () => 0);
function DFS(L, s) {
if (L === m) answer.push(tmp.slice());
else {
for (let i = s; i <= n; i++) {
tmp[L] = i;
DFS(L + 1, i + 1);
}
}
}
DFS(0, 1);
return answer;
}
console.log(solution(4, 2));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 9] 01 - ๊ฒฝ๋ก ํ์(์ธ์ ํ๋ ฌ) (0) | 2022.11.15 |
---|---|
[JavaScript/section 8] 15 - ์๋ค์ ์กฐํฉ (0) | 2022.11.14 |
[JavaScript/section 8] 13 - ์์ด ์ถ์ธกํ๊ธฐ (0) | 2022.11.10 |
[JavaScript/section 8] 12 - ์กฐํฉ์ ๊ฒฝ์ฐ ์ (0) | 2022.11.08 |
[JavaScript/section 8] 11 - ํฉํ ๋ฆฌ์ผ (0) | 2022.11.07 |