IT&컴퓨터공학/자료구조&알고리즘

[알고리즘] Level2 ) 타겟넘버 C++ 구현 ( DFS 이용 )

yan_z 2021. 1. 7. 22:57

#include <string>
#include <vector>
#include <iostream>
using namespace std;


int answer = 0;

void dfs(int index, int sum , int target , vector<int> numbers) {
	
	if (index == numbers.size()) { // numbers 의 마지막 원소까지 간 경우
		if (sum == target) { // sum 이 target 과 같으면
			answer++; 
		}
		return;
	}
	dfs(index+1, sum+numbers[index], target, numbers); // 더하는쪽으로
	dfs(index+1, sum-numbers[index], target, numbers); // 빼는쪽으로
}

int solution(vector<int> numbers, int target) {
	answer = 0;
	dfs(0, 0, target, numbers);
	return answer;
}

void main() {
	vector<int> numbers = { 1,2,3,4,5 };
	int target = 5;
	cout << solution(numbers, target) << endl;
}