๐ 10 - ์์ด ๊ตฌํ๊ธฐ
10์ดํ์ N๊ฐ์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ฉด ์ด ์ค M๊ฐ๋ฅผ ๋ฝ์ ์ผ๋ ฌ๋ก ๋์ดํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
์ค๋ณต์์ด ๊ตฌํ๊ธฐ ๋ฌธ์ ์ ๋ค๋ฅธ ์ ์ ์ค๋ณต์์ด ์์์ ์๊ด์๊ฒ ์ ํํ๋ค๋ ์ ์ด๋ค. ๋ง์ฝ 3๊ฐ์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๊ณ ์ด ์ค 2๊ฐ๋ฅผ ๋ฝ์ ์ผ๋ ฌ๋ก ๋์ดํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ด 6๊ฐ์ง์ด๋ค.
๐ ํ์ด ๋ฐฉ๋ฒ
ch ๋ฐฐ์ด์ tmp ๋ฐฐ์ด์ ์ด๋ค ์๊ฐ ์ ํ๋์๋์ง ํ์ธํ๊ธฐ ์ํ ๋ฐฐ์ด์ด๋ค. (์ค๋ณต ๊ฒ์ฆ)
- ch[i]์ ๊ฐ์ด 0์ด๋ฉด ์ ํ๋์ง ์์๋ค๋ ๊ฒ์ด๋ฏ๋ก ์ ํํด๋ ๋๋ค๋ ์๋ฏธ์ด๋ค. ๋ฐ๋๋ก ch[i]์ ๊ฐ์ด 1์ด๋ฉด ์ด๋ฏธ ์ ํ๋์๋ค๋ ๊ฒ์ด๋ฏ๋ก ๊ฑด๋๋ด๋ค.
- L(ํธ๋ฆฌ์ ๋ ๋ฒจ)์ด m๊ณผ ๊ฐ๋ค๋ฉด ํ๋์ ๊ฒฝ์ฐ๊ฐ ์์ฑ๋ ๊ฒ์ด๋ฏ๋ก tmp ๋ฐฐ์ด์ ์์ ๋ณต์ฌํ์ฌ answer ๋ฐฐ์ด์ ์ถ๊ฐํ๋ค.
- DFS ํจ์์ ํธ์ถ์ด ๋๋ ๋ค์์ ch[i](์ด์ ์ ์ ํํ ์ซ์)๋ฅผ 0์ผ๋ก ์ฌํ ๋น ํด์ผํ๋ค.
๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค๋ณด๋ ๊ฒ์ด ์ดํดํ๋๋ฐ ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค.
function solution(m, arr) {
const answer = [];
const n = arr.length;
const ch = Array.from({ length: n }, () => 0);
const tmp = Array.from({ length: m }, () => 0);
function DFS(L) {
if (L === m) {
answer.push(tmp.slice());
} else {
for (let i = 0; i < n; i++) {
if (ch[i] === 0) {
ch[i] = 1;
tmp[L] = arr[i];
DFS(L + 1);
ch[i] = 0;
}
}
}
}
DFS(0);
for (let [a, b] of answer) {
console.log(a, b);
}
return answer.length;
}
let arr = [3, 6, 9];
console.log(solution(2, arr));
๐ ํ ๋ง๋ ๋จ๊ธฐ๋ฉฐ..
์ดํดํ๋๋ฐ ์ด๋ ค์ธ ์ ์๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ฝ๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค๋ณด๋ ๊ฒ์ด ์ดํดํ๋๋ฐ ๋์์ด ๋ ์ ์์ง๋ง ๊ทธ๋๋ ์ด๋ ต๋ค๋ ์๊ฐ์ด ๋ ๋ค๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์~ ์ข์ ํ๋ฃจ ๋์๊ธฐ ๋ฐ๋๋๋ค๐
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 8] 12 - ์กฐํฉ์ ๊ฒฝ์ฐ ์ (0) | 2022.11.08 |
---|---|
[JavaScript/section 8] 11 - ํฉํ ๋ฆฌ์ผ (0) | 2022.11.07 |
[JavaScript/section 8] 09 - ๋์ ๊ตํ (0) | 2022.11.05 |
[JavaScript/section 8] 08 - ์ค๋ณต์์ด ๊ตฌํ๊ธฐ (0) | 2022.10.30 |
[JavaScript/section 8] 07 - ์ต๋์ ์ ๊ตฌํ๊ธฐ (0) | 2022.10.26 |