# 생각
타겟 넘버를 만들기 위해 더하거나 빼서
모든 경우의 수를 확인하므로
재귀를 이용한 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 |