728x90
๋ฐ์ํ
๐ 05 - ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ(DFS : ์๋ง์กด ์ธํฐ๋ทฐ)
N๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋ ์์ฐ์ ์งํฉ์ด ์ฃผ์ด์ง๋ฉด, ์ด ์งํฉ์ ๋ ๊ฐ์ ๋ถ๋ถ์งํฉ์ผ๋ก ๋๋์์ ๋ ๋ ๋ถ๋ถ์งํฉ์ ์์์ ํฉ์ด ์๋ก ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ฉด "YES"๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด "NO"๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค. ๋๋ก ๋๋๋ ๋ ๋ถ๋ถ์งํฉ์ ์๋ก์ ์งํฉ์ด๋ฉฐ, ๋ ๋ถ๋ถ์งํฉ์ ํฉํ๋ฉด ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์๋์ ์งํฉ์ด ๋์ด์ผ ํ๋ค.
๐ ํ์ด ๋ฐฉ๋ฒ
๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ ๋ฌธ์ ์ ํ์ด ๊ณผ์ ์ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค๊ฐ๋ฉด์ ์ดํด๋ฅผ ํ๋ค๋ฉด ์ด๋ ต์ง ์์ ๋ฌธ์ ์ด๋ค. ์ด๋ฒ ๋ฌธ์ ๋ํ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ฉด์ ์ดํด๋ฅผ ํ์๋ค.
- ๋ฐฐ์ด ์์๋ค์ ์ด ํฉ(total)์ ๊ตฌํ๋ค.
- ์ฌ๊ท๋ฅผ ๋๋ค๊ฐ ํ์ํ๊ณ ์๋ idx๊ฐ ๋ฐฐ์ด์ ๊ธธ์ด์ ๊ฐ๋ค๋ฉด ์ด ํฉ์์ sum(๋ถ๋ถ ์งํฉ์ ํฉ)์ ๋บ ๊ฐ์ด sum๊ณผ ๊ฐ์์ง ๋น๊ตํ๋ค.
- ๊ฐ์ ๊ฒฝ์ฐ answer ๋ณ์์ 'YES', flag(ํ์์ ๋ฉ์ถ๊ธฐ ์ํ ๋ณ์) ๋ณ์์ 1์ ์ฌํ ๋นํด์ค๋ค.
๐ ์์ค ์ฝ๋
function solution(arr) {
let answer = 'NO';
flag = 0;
let total = arr.reduce((a, b) => a + b);
let len = arr.length;
function DFS(idx, sum) {
if (flag) return;
if (idx === len) {
if (total - sum === sum) {
answer = 'YES';
flag = 1;
}
} else {
// sum += arr[idx];
DFS(idx + 1, sum + arr[idx]);
// sum -= arr[idx];
DFS(idx + 1, sum);
}
}
DFS(0, 0);
return answer;
}
let arr = [1, 3, 5, 6, 7, 10];
console.log(solution(arr));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 8] 07 - ์ต๋์ ์ ๊ตฌํ๊ธฐ (0) | 2022.10.26 |
---|---|
[JavaScript/section 8] 06 - ๋ฐ๋์ด ์น์ฐจ (0) | 2022.10.25 |
[JavaScript/section 8] 04 - ๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ (0) | 2022.10.20 |
[JavaScript/section 8] 03 - ์ด์งํธ๋ฆฌ ์ํ (0) | 2022.10.18 |
[JavaScript/section 8] 02 - ์ด์ง์ ์ถ๋ ฅ(์ฌ๊ท) (0) | 2022.10.14 |