TIL
TIL 240705 - 알고리즘 코드카타 리뷰 - 타겟 넘버
lemonpie611
2024. 7. 5. 20:58
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/43165
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정수들의 배열을 받아서, 정수들을 더하거나 빼서 타겟 숫자로 만드는 경우의 수를 구하는 것이다.
2. 답안
+, - 별로 n중 for문을 만들 순 없어서 재귀함수를 활용했다.
plus, minus 함수에서 각각 sum 연산 후 plus, minus를 호출하는 식으로 코드를 작성했다.
function solution(numbers, target) {
const plus = function (sum, numbers, i) {
sum += numbers[i];
if (i == numbers.length - 1 && sum == target) {
cnt += 1;
} else if (i != numbers.length - 1) {
plus(sum, numbers, i + 1);
minus(sum, numbers, i + 1);
}
};
const minus = function (sum, numbers, i) {
sum -= numbers[i];
if (i == numbers.length - 1 && sum == target) {
cnt += 1;
} else if (i != numbers.length - 1) {
plus(sum, numbers, i + 1);
minus(sum, numbers, i + 1);
}
};
let cnt = 0;
plus(0, numbers, 0);
minus(0, numbers, 0);
return cnt;
}