function solution(dartResult) {
var answer = 0;
let now = 0, before = 0, save = 0;
const dartArray = dartResult.match(/(\d+)|[A-Z]+|([*\#]+)/g);
dartArray.map((value, index) => {
switch (value){
case 'S':
now = Number(now);
break;
case 'D':
now = Math.pow(Number(now),2);
break;
case 'T':
now = Math.pow(Number(now),3);
break;
case '#':
now = Number(now) * (-1);
break;
case '*':
now = now * 2;
before = before * 2;
break;
default:
save += Number(before);
before = Number(now);
now = value;
}
});
answer = now + before + save;
return answer;
}
function solution(dartResult) {
const bonus = { 'S': 1, 'D': 2, 'T': 3 },
options = { '*': 2, '#': -1, undefined: 1 };
let darts = dartResult.match(/\d.?\D/g);
for (let i = 0; i < darts.length; i++) {
let split = darts[i].match(/(^\d{1,})(S|D|T)(\*|#)?/),
score = Math.pow(split[1], bonus[split[2]]) * options[split[3]];
if (split[3] === '*' && darts[i - 1]) darts[i - 1] *= options['*'];
darts[i] = score;
}
return darts.reduce((a, b) => a + b);
}
숫자만 따로 빼서 배열을 생각 안해본건 아닌데...
너무 생각을 많이 했나보다...