참가자에게 주어진 연산 수식이 담긴 문자열 expression이 매개변수로 주어질 때, 우승 시 받을 수 있는 가장 큰 상금 금액을 return 하도록 solution 함수를 완성해주세요.
입출력 예시
expression : "100-200*300-500+20"
-> 60420
function solution(expression) {
var answer = 0;
var dict = { 1 : '*', 2 : '+', 3 : '-' };
var prior = [[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]];
var exp_num = expression.split(/[^\d]/).filter(e => e);
var exp = expression.split(/\d/).filter(e => e);
prior.forEach((pri) => {
var tmp_num = [...exp_num];
var tmp = [...exp];
pri.forEach((p) => {
while(tmp.includes(dict[p])) {
var idx = tmp.indexOf(dict[p]);
var n;
if (dict[p] == "*") n = Number(tmp_num[idx]) * Number(tmp_num[idx + 1]);
else if (dict[p] == "+") n = Number(tmp_num[idx]) + Number(tmp_num[idx + 1]);
else n = Number(tmp_num[idx]) - Number(tmp_num[idx + 1]);
tmp.splice(idx, 1);
tmp_num[idx] = n;
tmp_num.splice(idx + 1, 1);
}
})
if (answer < Math.abs(tmp_num[0])) answer = Math.abs(tmp_num[0]);
})
return answer;
}
흐음
prior 반복에서 배열 대입할때 처음에 그냥 했다가 실패했닥
ㅎㅎ핳 왜그랬대