- PASS

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

using namespace std;

int cnt;
int T;
int S;

void dfs(int le, vector<int> numbers, int sum) {
    if (le == S) {
        if (sum == T)
            cnt++;
        return;
    }
    
    dfs(le + 1, numbers, sum + numbers[le] );
    dfs(le + 1, numbers, sum - numbers[le] );
        
}


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

    cnt = 0;
    T = target;
    S = numbers.size();
    dfs(0, numbers, 0);

    answer = cnt;
    return answer;
}

 

- TC1,2 시간초과 75.0/100

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

using namespace std;

int cnt;
int T;
int S;

void dfs(int le, int st, vector<int> numbers, int sum) {
    if (le == S) {
        if (sum == T)
            cnt++;
        return;
    }

    for (int i = st; i < S; i++) {
        for (int j = 0; j < 2; j++){
            if(j==0)
                dfs(le + 1, i + 1, numbers, sum + numbers[i] );
            else
                dfs(le + 1, i + 1, numbers, sum - numbers[i] );
        }
    }
}

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

    cnt = 0;
    T = target;
    S = numbers.size();
    dfs(0, 0, numbers, 0);

    answer = cnt;
    return answer;
}

+ Recent posts