1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/43165
정수들의 배열을 받아서, 정수들을 더하거나 빼서 타겟 숫자로 만드는 경우의 수를 구하는 것이다.
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;
}
'TIL' 카테고리의 다른 글
TIL 240709 - 알고리즘 코드카타 리뷰 - 주차요금 계산 (0) | 2024.07.09 |
---|---|
TIL 240708 - class-validator, custom validator (0) | 2024.07.08 |
TIL 240704 - UpdateValuesMissingError 에러해결 / Isolation Level 적용 (0) | 2024.07.04 |
TIL 240703 - Guard, 커스텀 데코레이터 사용 (0) | 2024.07.03 |
TIL 240702 - 의존성 주입 문제 해결 (0) | 2024.07.02 |