Algorithm/Programmers
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค - ํ๊ฒ ๋๋ฒ
๊ฐ๋ฐ๊ฐ๊ตด๐ธ
2022. 8. 23. 19:06
[๋ฌธ์ ]
https://school.programmers.co.kr/learn/courses/30/lessons/43165
[ํ์ด]
๋ํ์ ์ธ 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;
}