코딩테스트/프로그래머스

[프로그래머스] 수식 최대화

_Woogie 2023. 5. 6. 16:36

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

 

제한사항

 

입출력 예제

 

문제 풀이

1. +,-,*를 순서대로 돌아야하기 때문에 연산 배열 operators를 만들어준다.

2. 입력받은 수식을 정규표현식으로 숫자와 기호를 나누어준다. split(/(\D)/);

3. eval을 통해 문자열로 되어있는 식을 계산해주고 다시 연산식에 대입해준다.

4. 연산결과를 모두 배열에 저장후 가장 큰 값을 반환해준다.

 

function solution(expression) {
    const operators = ["*-+", "*+-", "+*-", "+-*", "-+*", "-*+"];
    const sum = [];
    
    for(let operator of operators) {
        const temp = expression.split(/(\D)/);
        for(let i of operator) {
            while(temp.includes(i)) {
                const index = temp.indexOf(i);
                temp.splice(index-1, 3, eval(temp.slice(index-1, index+2).join("")))
            }
        }
        sum.push(Math.abs(temp[0]))
    }
    return Math.max(...sum);
}

 

마무리

처음에 operators를 DFS로 구해야하나했는데 쉽게 풀수 있으면 쉽게 푸는게 좋은 방법인것같다.

정규식이 아직 미숙해서 split을 제대로 못사용했던 것 같다. 정규식 공부하자!