#include <string> #include <vector> using namespace std; vector<int> copy_numbers; int copy_target; int result[20]; int answer; void DFS(int cnt) { if(cnt == copy_numbers.size()) { int num = 0; for(int j = 0; j < cnt; j++) { num += result[j]; } if(num == copy_target) { answer++; } return; } for(int i = 0; i < 2; i++) { if(i == 0) { result[cnt] = copy_numbers[cnt]; DFS(cnt+1); } else if(i == 1) { result[cnt] = -copy_numbers[cnt]; DFS(cnt+1); } } } int solution(vector<int> numbers, int target) { copy_numbers = numbers; copy_target = target; DFS(0); return answer; } | cs |
'Programmers > Level 2' 카테고리의 다른 글
[프로그래머스 2] 위장 (C/C++) (0) | 2019.10.24 |
---|---|
[프로그래머스 2] 다리를 지나는 트럭 (C/C++) (★★) (3) | 2019.10.24 |
[프로그래머스 2] 카펫 (C/C++) (0) | 2019.10.23 |
[프로그래머스 2] 구명 보트 (C/C++) (★) (0) | 2019.10.23 |
[프로그래머스 2] 숫자 야구 (C/C++) (0) | 2019.10.23 |