https://programmers.co.kr/learn/courses/30/lessons/43165

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수

programmers.co.kr

풀이

 

재귀함수를 쓰는 DFS로 구현

 

using namespace std;

int dfs(vector<int> numbers, int target, int index, int num);

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


int dfs(vector<int> numbers, int target, int index, int num) {
	int size = numbers.size();
	if (index==size) {
		return num == target ? 1 : 0;
	}
	else {
		return dfs(numbers, target, index+1, num+numbers[index]) + dfs(numbers, target, index+1, num-numbers[index]);
	}
}

 

+ Recent posts