Algorithm/Programmers

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

1일1코딩 2020. 8. 20. 22:08

https://programmers.co.kr/learn/courses/30/lessons/43165

 

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

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

programmers.co.kr

풀이과정

주어진 numbers배열의 값을 더하거나 빼서 target값이 되는 모든 경우의 수를 구하는 문제이다.

재귀함수를 이용하여 현재 numbers의 값을 +, -는 2가지 경우를 완전탐색하였다.

 

소스코드

더보기
function solution(numbers, target) {
	var answer = 0;
	function solve(depth, curNumber) {
		if (depth == numbers.length) {
			if (target == curNumber) {
				answer++;
			}
			return;
		}
		for (var i = 0; i < 2; i++) {
			var number = i == 0 ? numbers[depth] * - 1 : numbers[depth];
			solve(depth+1, curNumber + number);
		}
	}
	solve(0, 0);
	return answer;
}