본문 바로가기
개발/알고리즘

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

by JeonJaewon 2021. 4. 25.

 이 문제는 조건 서술을 매우 빈약하게 해 놓아서 푸는데 어려움이 있었다. 문제에서 제대로 설명이 안 된 조건은 바로 배열에 주어진 순서대로 연산이 이루어진다는 점이다. 예시 케이스도 [1, 1, 1, 1, 1] 뿐이라 이 조건이 전혀 설명이 되지 않는다.

 

 풀이는 재귀를 이용했다. 지금까지 더해진 수를 sum 변수에 저장하고, 이번에 연산할 수가 sum에 더해진 것을 added, 뺀 것을 subbed에 저장했다. index을 1씩 늘려가며 recur 함수를 반복한다. index가 배열 끝에 달했을 때, added나 subbed가 원하는 target과 동일할 경우가 정답 케이스이다.

 

프로그래머스에는 이렇게 조건 설명이 허술한 문제들이 좀 있는 것 같다. 주의해야 할 듯..

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var answer = 0;
const recur = (numbers, sum, index, target, size) => {
    const added = (sum + numbers[index]);
    const subbed = (sum - numbers[index]);
    if (index == size - 1) {
        if (added == target || subbed == target) {
            answer++;
        }
        return;    
    }
    index++;
    recur(numbers, added, index, target, size);
    recur(numbers, subbed, index, target, size);
}
 
function solution(numbers, target) {
    recur(numbers, 00, target, numbers.length);
    return answer;
}
cs

 

댓글