[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ํ๊ฒ ๋๋ฒ
[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/43165
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
[ํ์ด]
๋ํ์ ์ธ DFS ๋ฌธ์ ๋ก ๋๊ฐ์ง ๋ฐฉํฅ์ผ๋ก ์ด๋์ด ๊ฐ๋ฅํฉ๋๋ค.
- + ์ฐ์ฐ์ ํด์ฃผ๊ณ ๋ค์ index๋ก ์ด๋
- - ์ฐ์ฐ์ ํด์ฃผ๊ณ ๋ค์ index๋ก ์ด๋
ํ์ฌ ๊ณ์ฐ์ค์ธ numbers์ index๋ฅผ dfs ํจ์์ ์ธ์๋ก ์ ๋ฌํด ๋ง์ฝ ๋ชจ๋ ์ซ์๊ฐ ์ฐ์ฐ์ด ์๋ฃ๋๋ฉด, ์ฆ index๊ฐ numbers.length์ ๊ฐ์์ง๋ฉด dfs ํจ์๋ฅผ return ํฉ๋๋ค.
์์ 1๋ฒ์ ๊ณผ์ ์ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ์ด ์ฐ์ฐ์ด ์งํ๋ฉ๋๋ค.
[1 + 1 , 1 - 1]
[1 + 1 + 1, 1 + 1 - 1] [1 - 1 + 1, 1 - 1 - 1]
...
[์ฝ๋]
function solution(numbers, target) {
var answer = 0;
const dfs = (ret, i) => {
if(i === numbers.length) {
if(target === ret) {
answer++;
}
return;
}
dfs(ret + numbers[i], i + 1);
dfs(ret - numbers[i], i + 1);
}
dfs(0,0);
return answer;
}