๋ฐ์ํ
๐ ๋ฌธ์
๐ก ํ์ด
๊น์ด ์ฐ์ ํ์ (DFS)์ ํ์ฉํ์ฌ ์ฃผ์ด์ง ์ซ์ ๋ฐฐ์ด์์ ๊ฐ ์ซ์๋ฅผ ๋ํ๊ฑฐ๋ ๋นผ์ ํน์ ๋ชฉํ ์ซ์(target)๋ฅผ ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ์์ ๋๋ค.
class Solution {
private int answer = 0;
public int solution(int[] numbers, int target) {
dfs(numbers, target, 0, 0);
return answer;
}
private void dfs(int[] numbers, int target, int index, int currentSum) {
if (index == numbers.length) {
// ๋ฐฐ์ด์ ๋๊น์ง ๋๋ฌํ ๊ฒฝ์ฐ, ํ์ฌ ํฉ์ด ํ๊ฒ๊ณผ ์ผ์นํ๋์ง ํ์ธํ๊ณ answer๋ฅผ ์
๋ฐ์ดํธ
if (currentSum == target) {
answer++;
}
return;
}
// ํ์ฌ ์ซ์๋ฅผ ๋ํ๊ฑฐ๋ ๋นผ์ ๋ชจ๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ฅผ ํ์
dfs(numbers, target, index + 1, currentSum + numbers[index]);
dfs(numbers, target, index + 1, currentSum - numbers[index]);
}
}