본문 바로가기

온라인 코딩/재귀 호출(Recursive Call)

[프로그래머스] 타겟 넘버

 

 

 

 

 

문제

 

소스코드

#include<iostream>
#include <vector>
using namespace std;

void Recursive(int value, int index, vector<int>& numbers);
int g_answer, g_target;

int solution(vector<int> numbers, int target) {
	g_target = target;
	Recursive(0, 0, numbers);
	return g_answer;
}

void Recursive(int value, int index, vector<int>& numbers) {
	if (index == numbers.size()) {
		if (value == g_target) {
			++g_answer;
		}
			return;
	}

	Recursive(value - numbers[index], index + 1, numbers);
	Recursive(value + numbers[index], index + 1, numbers);
}

 

 

후기

제한사항이 생각보다 적어서 탐색의 깊이는 따로 지정하지 않고 전부다 탐색하도록 하였다. 

 

 

 

 

출처 및 레퍼런스

문제 링크:https://programmers.co.kr/learn/courses/30/lessons/43165

 

 

 

 

 

 

'온라인 코딩 > 재귀 호출(Recursive Call)' 카테고리의 다른 글

[백준] 10872번 팩토리얼  (0) 2020.04.06
[백준] 17269번 이름궁합 테스트  (0) 2020.02.24
[백준] 1074번 Z  (1) 2020.01.11