๐ 15 - ์๋ค์ ์กฐํฉ
N๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋ฉด ๊ทธ ์ซ์๋ค ์ค K๊ฐ๋ฅผ ๋ฝ๋ ์กฐํฉ์ ํฉ์ด ์์์ ์ ์ M์ ๋ฐฐ์์ธ ๊ฐ์๋ ๋ช ๊ฐ๊ฐ ์๋์ง ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
์๋ฅผ ๋ค๋ฉด 5๊ฐ์ ์ซ์ 2 4 5 8 12๊ฐ ์ฃผ์ด์ง๊ณ , 3๊ฐ๋ฅผ ๋ฝ์ ์กฐํฉ์ ํฉ์ด 6์ ๋ฐฐ์์ธ ์กฐํฉ์ ์ฐพ์ผ๋ฉด 4+8+12, 2+4+12๋ก 2๊ฐ์ง๊ฐ ์๋ค.
๐ ํ์ด ๋ฐฉ๋ฒ
๐ต ๋์ ํ์ด ๋ฐฉ๋ฒ
if๋ฌธ ์์ 2๊ฐ์ ์กฐ๊ฑด์ ๊ฐ์ด ์ฃผ์ด L(๋ ๋ฒจ)์ด k(๋ฝ๋ ๊ฐ์)์ ๊ฐ๋๋ผ๋ sum์ด 6์ ๋ฐฐ์๊ฐ ์๋๋ผ๋ฉด else๋ฌธ์ผ๋ก ์ด๋ํ๋ค. ์ด ๊ณผ์ ์์ ๊ฒฐ๊ณผ๋ ๋์ผํ๊ฒ ๋์ค์ง๋ง ์๊ฐ์ ์ก์๋จน์ ์ ์๋ค.๐คฌ
L์ด k์ ๊ฐ๋ค๋ฉด else ๋ฌธ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด ์๋ if๋ฌธ ๋ด๋ถ์์ sum์ด 6์ ๋ฐฐ์์ธ์ง๋ฅผ ํ์ธํ๊ณ ๋น ์ ธ๋์์ผ ํ๋ค.
function solution(n, k, arr, m) {
let answer = 0;
function DFS(L, s, sum) {
if (L === k && sum % m === 0) {
answer++;
} else {
for (let i = s; i < n; i++) {
DFS(L + 1, i + 1, sum + arr[i]);
}
}
}
DFS(0, 0, 0);
return answer;
}
let arr = [2, 4, 5, 8, 12];
console.log(solution(5, 3, arr, 6));
๐ ๊ฐ์ฌ๋ ํ์ด ๋ฐฉ๋ฒ
- L์ด k์ ๊ฐ๋ค๋ฉด ํ๋์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ด๋ฏ๋ก sum์ด 6์ ๋ฐฐ์์ธ์ง ํ์ธํ๋ค.
- L์ด k์ ๊ฐ๊ณ sum์ด 6์ ๋ฐฐ์๋ผ๋ฉด answer++์ ํด์ค๋ค.
function solution(n, k, arr, m) {
let answer = 0;
function DFS(L, s, sum) {
if (L === k) {
if (sum % m === 0) answer++;
} else {
for (let i = s; i < n; i++) {
DFS(L + 1, i + 1, sum + arr[i]);
}
}
}
DFS(0, 0, 0);
return answer;
}
let arr = [2, 4, 5, 8, 12];
console.log(solution(5, 3, arr, 6));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 9] 02 - ๊ฒฝ๋ก ํ์(์ธ์ ๋ฆฌ์คํธ) (0) | 2022.11.16 |
---|---|
[JavaScript/section 9] 01 - ๊ฒฝ๋ก ํ์(์ธ์ ํ๋ ฌ) (0) | 2022.11.15 |
[JavaScript/section 8] 14 - ์กฐํฉ ๊ตฌํ๊ธฐ (0) | 2022.11.12 |
[JavaScript/section 8] 13 - ์์ด ์ถ์ธกํ๊ธฐ (0) | 2022.11.10 |
[JavaScript/section 8] 12 - ์กฐํฉ์ ๊ฒฝ์ฐ ์ (0) | 2022.11.08 |