개발/알고리즘

[프로그래머스] 타겟 넘버(C++)

Majangnan 2025. 4. 19. 18:16

문제 링크

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

코드 구현

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int answer = 0;

void dfs(const vector<int>& numbers, int _Index, int _sum, const int& _target)
{
    if (_Index == numbers.size())
    {
        if (_sum == _target) answer++;
        return;
    }
      
    dfs(numbers, _Index + 1, _sum + numbers[_Index], _target);
    dfs(numbers, _Index + 1, _sum - numbers[_Index], _target);
}

int solution(vector<int> numbers, int target) 
{
    dfs(numbers, 0, 0, target);

    return answer;
}

 

 

해결 방법

모든 경우의 수를 순회하도록 재귀 함수를 이용한 DFS 알고리즘을 사용하였다.