ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
N๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋ ์์ฐ์ ์งํฉ์ด ์ฃผ์ด์ง๋ฉด, ์ด ์งํฉ์ ๋ ๊ฐ์ ๋ถ๋ถ์งํฉ์ผ๋ก ๋๋์์ ๋ ๋ ๋ถ๋ถ์งํฉ์ ์์์ ํฉ์ด ์๋ก ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ฉด “YES"๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ”NO"๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
๋๋ก ๋๋๋ ๋ ๋ถ๋ถ์งํฉ์ ์๋ก์ ์งํฉ์ด๋ฉฐ, ๋ ๋ถ๋ถ์งํฉ์ ํฉํ๋ฉด ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์๋์ ์งํฉ์ด ๋์ด ํฉ๋๋ค.
์๋ฅผ ๋ค์ด {1, 3, 5, 6, 7, 10}์ด ์ ๋ ฅ๋๋ฉด {1, 3, 5, 7} = {6, 10} ์ผ๋ก ๋ ๋ถ๋ถ์งํฉ์ ํฉ์ด 16์ผ๋ก ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ ๊ฒ์ ์ ์ ์๋ค.
๋ฌธ์ ํ์ด_๋ฌถ์ ๊ธฐ์ค
- ๋ฌถ์ ๊ฒฝ์ฐ์ ๋ฌถ์ง ์์ ๊ฒฝ์ฐ ๋ ๊ฐ๋ก ๋๋ ๋ค์ ๋ ๋ฒจ๋ก ์ด๋
- depth๋ฅผ ๋์ด์ค ๊ฒฝ์ฐ ํ์ ์ข ๋ฃ ๋ฐ ๋๋ ๋ ์งํฉ์ ๋น๊ต
์ฝ๋
function solution(d, n) {
let answer = 'NO';
let flag = 0;
let check = Array.from({length: d + 1}, () => 0);
function DFS(v) {
if(v === d + 1) {
if(flag) return;
let tmp1 = 0; //1๋ฒ ์งํฉ์ ํฉ
let tmp2 = 0; //2๋ฒ ์งํฉ์ ํฉ
for(let i = 1; i < check.length; i++) {
if(check[i] === 1) tmp1 += n[i-1];
else tmp2 += n[i-1];
}
if(tmp1 === tmp2) {
answer ='YES';
flag = 1;
}
}
else {
check[v] = 1; //1๋ฒ ์งํฉ์ ๋ฌถ์ ๊ฒฝ์ฐ
DFS(v + 1);
check[v] = 2; //2๋ฒ ์งํฉ์ ๋ฌถ์ ๊ฒฝ์ฐ
DFS(v + 1);
}
}
DFS(1);
return answer;
}
let depth = 6;
let nums = [1, 3, 5, 6, 7, 10];
console.log(solution(depth, nums));
๋ฌธ์ ํ์ด_ํฉ ๊ธฐ์ค
- ํฉํ๋ ๊ฒฝ์ฐ์ ํฉํ์ง ์๋ ๊ฒฝ์ฐ๋ก ๋๋ ์งํ
- ํฉํ๋ ํฉํ์ง ์๋ ๊ฐ์ ๋ ๋ฒจ์ ๋ฌด์กฐ๊ฑด ์ฆ๊ฐ
- ํ์์ด ์ข ๋ฃ๋๋ฉด ํฉํ ๊ฐ๊ณผ ํฉํ์ง ์์ ๋๋จธ์ง ๊ฐ(์ฌ์งํฉ์ ๊ฐ)์ ๋น๊ต
์ฝ๋
function solution(arr) {
let answer = 'NO';
let flag = 0;
let total = arr.reduce((a, b) => a + b, 0); //๋ชจ๋ ์์์ ํฉ
let n = arr.length;
function DFS(level, sum) {
if(flag) return;
if(level === n) {
if(sum === (total - sum)) { //์ฌ์งํฉ ์์ ํฉ๊ณผ์ ๋น๊ต
answer = 'YES';
flag = 1 ;
}
}
else {
DFS(level + 1, sum + arr[level]); //ํฉํ๋ ๊ฒฝ์ฐ
DFS(level + 1, sum); //ํฉํ์ง ์๊ณ ๋ค์ ๋ ๋ฒจ๋ก ๋์ด๊ฐ๋ ๊ฒฝ์ฐ
}
}
DFS(0, 0); //๋ ๋ฒจ๊ณผ ์ถ์ ํฉ
return answer;
}
let nums = [1, 3, 5, 6, 7, 10];
console.log(solution(nums));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ค์ค for๋ฌธ๊ณผ ์ฌ๊ท์ ์ฐจ์ด]์ค๋ณต์์ด ๊ตฌํ๊ธฐ (0) | 2021.08.06 |
---|---|
[DFS]์ต๋ ์ ์ ๊ตฌํ๊ธฐ (0) | 2021.08.04 |
[DFS]๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ (0) | 2021.07.30 |
[DFS]์ด์งํธ๋ฆฌ ์ํ (0) | 2021.07.28 |
[์ฌ๊ทํจ์์ ์คํ ํ๋ ์]์ด์ง์ ์ถ๋ ฅ (0) | 2021.07.27 |
๋๊ธ