๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[์ธํ๋ฐ ์น์
8] ์๋ค์ ์กฐํฉ (Javascript)
์ ๋ฃ ๊ฐ์์ธ ๊ด๊ณ๋ก ๋ฌธ์ ์ค๋ช
์ ์๋ตํฉ๋๋ค.
โ๏ธIdea Sketch
2021-06-30
1. K๊ฐ๋ฅผ ๋ฝ๋ ์กฐํฉ์ ํฉ์ด ์์์ ์ ์ M์ ๋ฐฐ์์ธ ๊ฐ์
2. DFS ์ข ๋ฃ์กฐ๊ฑด
- ๋ฝ๋ ํ์ v >= k ์ธ ๊ฒฝ์ฐ, return;
- sum % m === 0์ธ ๊ฒฝ์ฐ, cnt++;
if (v >= k) {
if (sum % m === 0) cnt++;
return;
}
3. DFS ๋ก์ง
- ์กฐํฉ์ ๊ตฌํ๋ฏ๋ก ์ค๋ณตX
- DFS ๋งค๊ฐ๋ณ์ : ๋ฝ์ ํ์ v, ์ด์ ์ ๋ฝ์ arr ์์์ ์ธ๋ฑ์ค u
for (let i=u+1; i<arr.length, i++) {
sum += arr[i];
DFS(v+1, i);
sum -= arr[i];
}
4. DFS ์ด๊ธฐ๊ฐ
- DFS(0, -1);
- v : ๊ตฌ์ฌ ๋ฝ์ ํ์๊ฐ 0ํ
- u : arr์์ ๋ฝ์ ๊ตฌ์ฌ์ ์ธ๋ฑ์ค, ์์ง ๋ฝ๊ธฐ ์ ์ด๋ฏ๋ก -1
โ๏ธ์์ค์ฝ๋
2021-06-30
let k = 3;
let m = 6;
let arr = [2, 4, 5, 8, 12];
let cnt = 0;
let sum = 0;
function DFS(v, u) {
if (v >= k) {
if (sum % m === 0) cnt++;
return;
}
for (let i = u + 1; i < arr.length; i++) {
sum += arr[i];
DFS(v + 1, i);
sum -= arr[i];
}
}
DFS(0, -1);
console.log(cnt);