# 생각

타겟 넘버를 만들기 위해 더하거나 빼서

모든 경우의 수를 확인하므로

재귀를 이용한 dfs로 해결할 수 있다

 

 

# 전체 코드

#include <bits/stdc++.h>
using namespace std;

void func(vector<int>& numbers, int target, int& answer, int sum = 0, int depth = 0)
{
	if (depth == numbers.size())
	{
		if (sum == target)
		{
			answer++;
		}
		return;
	}
	func(numbers, target, answer, sum + numbers[depth], depth + 1);
	func(numbers, target, answer, sum - numbers[depth], depth + 1);
}

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

 


출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

'Algorithm > 프로그래머스' 카테고리의 다른 글

[Lv.3] 단어 변환 with cpp  (0) 2022.03.04
[Lv.3] 네트워크 with cpp  (0) 2022.03.03
[Lv.3] 베스트앨범 with cpp  (0) 2022.03.01
[Lv.2] 위장 with cpp  (0) 2022.03.01
[Lv.2] 전화번호 목록 with cpp  (0) 2022.02.28

+ Recent posts