numStack을 만들어주고 그 안에 숫자만 넣는다. 그 이후 주어진 조건에 맞게 numStack 안에있는 숫자를 변화시키고 마지막에 총합을 구하자!
function solution(dartResult) {
var answer = 0;
var sum = 0;
var numStack = [];
var regex = /[0-9]/g
let splited = dartResult.split('');
for(var i =0; i<splited.length; i++){
if(regex.test(splited[i])){
if(splited[i] == 1){
if(splited[i+1] == 0){
i++;
numStack.push(10)
}else{
numStack.push(parseInt(splited[i]));
}
}else{
numStack.push(parseInt(splited[i]))
}
}else if(splited[i] === 'S' || splited[i] === 'D' || splited[i] === 'T'){
let popped = numStack.pop();
switch(splited[i]){
case 'S':
popped = Math.pow(popped,1)
break;
case 'D':
popped = Math.pow(popped,2)
break;
case 'T':
popped = Math.pow(popped,3)
break;
}
numStack.push(popped);
}else{
if(splited[i] === '*'){
let popped = numStack.pop();
if(numStack.length === 0){
popped *=2;
numStack.push(popped);
}else{
let popped2 = numStack.pop();
popped *=2;
popped2 *=2;
numStack.push(popped2);
numStack.push(popped);
}
}else{
let popped = numStack.pop();
popped = popped*(-1);
numStack.push(popped);
}
}
}
return answer = numStack.reduce((prev,now)=>prev+=now);
}
주어진 경우만 잘 판단해서 넣으면 쉽게 풀리는 문제였다. pop을 여러번 하고 다시 넣어 줄 때 순서가 바뀔 수 있음에 주의하여 풀자