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;
}