๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[์ธํ๋ฐ ์น์
8] ๋์ ๊ตํ (Javascript)
์ ๋ฃ ๊ฐ์์ธ ๊ด๊ณ๋ก ๋ฌธ์ ์ค๋ช
์ ์๋ตํฉ๋๋ค.
โ๏ธIdea Sketch
2021-06-29
1. ๊ฐ์ฅ ์ ์ ์์ ๋์ ์ผ๋ก ๊ตํ
- DP์ธ์ง ๊ทธ๋ฆฌ๋์ธ์ง ํท๊ฐ๋ฆผ
2. DFS ์ข ๋ฃ์กฐ๊ฑด
- ์ค๋ณต์์ด๋ก ๊ตฌํ (for ๋ฐ๋ณต๋ฌธ)
- ๊ฑฐ์ค๋ฆ๋์ด target๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด ์ข ๋ฃ --> Math.min()์ ์จ์ผํ๋?
- ๊ฑฐ์ค๋ฆ๋์ด target๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ๋์ ์ ๋ฝ์ ํ์์ธ v๋ฅผ ์ถ๋ ฅ
if (sum >= target) {
if (sum === target) console.log(v);
return;
}
3. DFS ๋ก์ง
- ์ค๋ณต๊ฐ๋ฅ์ด๋ฏ๋ก, v๋ ๋ฝ์ ์ซ์๊ฐ ์๋๋ผ ๋ฝ์ ํ์
- for ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ
for (let i=0; i<arr.length; i++) {
sum += arr[i];
DFS(v+1);
sum -= arr[i];
}
4. v์ ์ด๊ธฐ๊ฐ
- ๋์ ์ ์ถ๊ฐํ๊ณ ๋์ v+1
- ์ด๊ธฐ๊ฐ์ 0
โ๏ธ์์ค์ฝ๋
2021-06-29
let arr = [1, 2, 5];
let target = 15;
let sum = 0;
let min = Number.MAX_SAFE_INTEGER;
function DFS(v) {
if (sum >= target) {
if (sum === target) min = Math.min(min, v);
return;
}
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
DFS(v + 1);
sum -= arr[i];
}
}
DFS(0);
console.log(min);