C++:: 프로그래머스 < 타겟 넘버 >

jahlee·2023년 4월 14일
0

프로그래머스_Lv.2

목록 보기
31/106
post-thumbnail

간단한 dfs문제이다. 숫자를 골라서 + 또는 - 를 해준 결과값을 넘겨주는 방식으로 접근하면 편하다.

#include <string>
#include <vector>

using namespace std;

int answer, n;

void dfs(int cnt, int res, vector<int> numbers, int target)
{
    if(cnt == n)
    {// 숫자를 다 골랐다면
        if (res == target) answer++;// target 과 값이 같다면
        return ;
    }
    //현재 숫자를 더한값 넘겨주기
    dfs(cnt+1, res+numbers[cnt], numbers, target);
    //현재 숫자를 뺀값 넘겨주기
    dfs(cnt+1, res-numbers[cnt], numbers, target);
}

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

0개의 댓글