728x90
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/43165
풀이
바로 전 문제랑 비슷한 문제로 DFS로 +,- 를 인덱스별로 해주어서 맨 마지막 인덱스에 도달하면 target값과 비교해서 같으면 +1씩 해주었다. 코드를 보면 더 쉬울듯!?
#include <string>
#include <vector>
using namespace std;
int answer = 0;
void dfs(vector<int> numbers, int sum, int i, int target) { // 배열, 합, 인덱스, 타겟
if (i == numbers.size()) { // 맨 마지막 인덱스에 도달했을 때
if (sum == target) answer++; // 같으면 ans ++
}
else {
dfs(numbers, sum + numbers[i], i + 1, target); // 더하기
dfs(numbers, sum - numbers[i], i + 1, target); // 빼기
}
return;
}
int solution(vector<int> numbers, int target) {
dfs(numbers, 0, 0, target);
return answer;
}
728x90
728x90
'Algorihtm > 프로그래머스' 카테고리의 다른 글
C++ 프로그래머스 카펫 (0) | 2023.11.16 |
---|---|
C++ 프로그래머스 네트워크 (1) | 2023.11.14 |
C++ 프로그래머스 구명보트 (0) | 2023.11.01 |
C++ 프로그래머스 정수삼각형 (0) | 2023.10.30 |
C++ 프로그래머스 JadenCase 문자열 만들기 (0) | 2023.10.30 |