
https://school.programmers.co.kr/learn/courses/30/lessons/43165
타겟 넘버를 만드는 경우의 수를 구하는 문제였고, n값이 20개 이하로 적은 편이어서 DFS로 완전 탐색으로 문제를 해결하려고 했다.
#include <string>
#include <vector>
using namespace std;
int DFS(vector<int>& numbers, int& target, int idx, int sum)
{
if (idx == numbers.size())
{
return (target == sum) ? 1 : 0;
}
// 현재 인덱스의 numbers 요소를 더한 경우와 뺀 경우 두 가지 탐색
return DFS(numbers, target, idx + 1, sum + numbers[idx]) +
DFS(numbers, target, idx + 1, sum - numbers[idx]);
}
int solution(vector<int> numbers, int target)
{
return DFS(numbers, target, 0, 0);;
}
'공부 > Code Cata' 카테고리의 다른 글
k진수에서 소수 개수 구하기 (0) | 2025.03.19 |
---|---|
N-Queen / 백트래킹 (0) | 2025.03.18 |
사전에서 몇 번째 단어인지 구하기 / 브루트 포스 (0) | 2025.03.13 |
피로도 / 브루트 포스 기법(순열) (1) | 2025.03.11 |
프로세스 / deque 활용 (0) | 2025.03.10 |