와이유스토리

[DFS 단순] 프로그래머스 타겟 넘버 C++ 본문

코딩테스트/그래프|트리

[DFS 단순] 프로그래머스 타겟 넘버 C++

유(YOO) 2022. 1. 20. 21:35

 

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

 

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

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

programmers.co.kr

#include <string>
#include <vector>

using namespace std;

int answer = 0;

void dfs(vector<int> numbers, int target, int idx, int cal) {
    if (idx == numbers.size())
    {
        if (target == cal)
        {
            answer++;
        }
        
        return;
    }
    
    dfs(numbers, target, idx+1, cal+numbers[idx]);
    dfs(numbers, target, idx+1, cal-numbers[idx]);
    
    return;
}

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