수식 최대화 자바스크립트

HyosikPark·2020년 11월 27일
0

알고리즘

목록 보기
47/72
function solution(expression) {
    let answer = [];
    const cases = [
        ['-', '*', '+'],
        ['-', '+', '*'],
        ['*', '-', '+'],
        ['*', '+', '-'],
        ['+', '-', '*'],
        ['+', '*', '-']
    ] 
    
    for(let i = 0; i <cases.length; i++) {
        let arr = expression.split(/(\D)/)
        for(let j = 0; j<3; j++) {
            while(arr.includes(cases[i][j])) {
                let index = arr.indexOf(cases[i][j])
                arr.splice(index-1,3,(new Function(`return ${arr.slice(index-1,index+2).join('')}`))());
            }
        }
        answer.push(arr);
    }
    
    return Math.max(...answer.map(e => Math.abs(e)));
}

split 메소드에 정규식을 활용할 수 있으며 정규식에 괄호를 사용할 경우 괄호내의 문자도 split된 배열에 포함된다.

자바스크립트 코드를 문자열 방식으로 사용하고 싶을 경우 eval을 사용할 수 있는데 보안에 위협이 있으므로 사용하지 않는 것이 좋다. ex) eval('2+2') = 4;
이를 대체하는 방식으로 (new Function('return 코드작성'))()을 사용할 수 있다.

0개의 댓글