본문 바로가기

PS

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

#include <bits/stdc++.h>
using namespace std;

int solution(vector<int> numbers, int target) {
    auto dfs = [&](auto &self, int idx, int cur_sum) -> int {
        if (idx == numbers.size()) {  // 끝까지 탐색한 경우
            if (cur_sum == target) {  // 현재 누적 합이 target과 같은 경우
                return 1;  // 카운트
            }
            return 0;
        }
        int cnt = 0;
        cnt += self(self, idx + 1, cur_sum + numbers[idx]);  // 탐색한 숫자를 더하는 경우
        cnt += self(self, idx + 1, cur_sum - numbers[idx]);  // 탐색한 숫자를 빼는 경우
        return cnt;
    };
    int answer = dfs(dfs, 0, 0);
    return answer;
}