타켓 넘버 : 문제 링크
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성
제한 사항
- 주어지는 숫자의 개수는 2개 이상 20개 이하이다.
- 각 숫자는 1 이상 50 이하인 자연수이다.
- 타겟 넘버는 1 이상 1000 이하인 자연수이다.
#include <vector>
using namespace std;
int answer;
void dfs(const vector<int>& numbers, const int& target, int idx, int sum, bool sign) {
if(sign) sum += numbers[idx++];
else sum -= numbers[idx++];
if(numbers.size() != idx) {
dfs(numbers, target, idx, sum, true);
dfs(numbers, target, idx, sum, false);
}
else {
if(sum == target) answer++;
}
}
int solution(vector<int> numbers, int target) {
answer = 0;
int sum = 0;
dfs(numbers, target, 0, sum, true);
dfs(numbers, target, 0, sum, false);
return answer;
}