새소식

Programmers

[Programmers] 타겟 넘버 문제 - (javascript)

  • -
728x90
문제 이름 :  타겟 넘버

 

<<< 문제 내용 >>>



 

function solution(numbers, target) {
    let answer =0;
    
    const operCall = {
    '+' : (a, b) => a+b,
    '-' : (a, b) => a-b
    }
    
    // 연산자 만들 갯수
    const numberLen = numbers.length;
    
    const operate = ['+','-'];
    
    let operators = [];
    const comb = (cnt, arr)=>{
        if(cnt===numberLen){
            operators.push([...arr]);
            return;
        }
        
        for(let i=0;i<operate.length; i++){
            comb(cnt+1, [...arr, operate[i]]);
        }
    }
    
    comb(0, []);
    let cnt =0;
    
    for(let i=0; i<operators.length; i++){
        let temp = [...numbers];
        if(operators[i][0] === '-') temp[0] = -temp[0];
        
        for(let j=1; j< numberLen; j++){
            temp[j] = operCall[operators[i][j]](temp[j-1], temp[j]);
        }
        
        if(temp[numberLen-1] === target) cnt++;
    }
    
    return cnt;
}

* 백트래킹과 연산자를 끼워서 어떻게 처리할지만 잘 정하면 되는 문제입니다.

보통 저는 연산하는 문제에서는 const operCall 처럼 딕셔너리 내에 애로우 함수를 이용하여 가시적으로 처리합니다.

 

이런 문제를 몇 번 풀었더니 이젠 자동으로 코딩이 시작되는 것 같습니다.

잘 안풀릴 때는 노트에 흐름을 정리한 후, 유사한 문제를 몇 개 풀어보시면 도움이 될 것 같습니다.

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.