코딩테스트/프로그래머스
[프로그래머스] 수식 최대화
_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을 제대로 못사용했던 것 같다. 정규식 공부하자!