Programmers 43165

타겟 넘버

Posted by Damin on February 23, 2020

타겟 넘버

문제 링크

  • 숫자가 주어졌을 때 타겟 넘버를 구할려면 더하거나 빼야 한다.

  • 방법은 2가지 (더하기, 빼기)

  • 트리라고 생각하고 왼쪽 노드는 +number, 오른쪽 노드는 - number라고 생각하자.

  • 전위순회를 하면서 값이 타겟 넘버인지 확인!

Tree Example

1
2
3
    root
  1     -1
1  -1  1 -1

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int ans = 0;
void go(int num, int index, int answer, int target, vector<int> numbers) {
	answer += num;
	if (index + 1 == numbers.size()) {
		if (answer == target) {
			ans++;
		}
		return;
	}
	go(numbers[index + 1], index + 1, answer, target, numbers);
	go(-numbers[index + 1], index + 1, answer, target, numbers);
}

int solution(vector<int> numbers, int target) {
	int answer = 0;
	go(numbers[0], 0, 0, target, numbers);
	go(-numbers[0], 0, 0, target, numbers);
	answer = ans;
	return answer;
}