Game Develop

[Algorithm] Programmers :: 타겟 넘버 본문

Algorithm/Programmers

[Algorithm] Programmers :: 타겟 넘버

MaxLevel 2022. 5. 19. 21:28

https://programmers.co.kr/learn/courses/30/lessons/43165?language=cpp 

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수

programmers.co.kr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int answer = 0;
 
void DFS(int n, int sum, int target, bool isAdd, vector<int>& numbers) // 배열인덱스
{
    if (isAdd) sum += numbers[n];
    else sum -= numbers[n];
 
    if (n == numbers.size() - 1)
    {
        if (sum == target) answer++;
        return;
    }
 
    DFS(n + 1, sum, target, true, numbers);
    DFS(n + 1, sum, target, false, numbers);
}
 
int solution(vector<int> numbers, int target)
{
    DFS(00, target, true, numbers);
    DFS(00, target, false, numbers);
 
    return answer;
}
cs

노드를 배열의 각 인덱스라 생각하고 +값 한번, -값 한번씩 해주다가 마지막 원소까지 합연산 해주고 결과가 target과 일치하면 answer++ 해주면 된다. 쉬워서 코드만 봐도 바로 이해가능할듯하다.