- 정규표현식에서부터 length를 설정해줘서 match로 1차적 split을 시킴
- 1을 for문으로 돌면서 하나하나 정규표현식으로 split을 시킨다
- 하나하나
function solution(dartResult) {
const regex = /\d{1,2}[SDT]{1}[*|#]?/g;
//\d: 숫자, {}: 갯수, []:종류, {}:갯수, []:종류, ?:있거나 없거나, g:global
let result = [];
for (const dart of dartResult.match(regex)) {
//여기서부터 split을 시킴
const game = [...dart.split(/([SDT]{1})/)];// SDT중의 값으로 1개씩
console.log(game)
const score = game[0];//숫자
let bonus = 1;
let option = 1;
if (game[1] === "S") bonus = 1;
if (game[1] === "D") bonus = 2;
if (game[1] === "T") bonus = 3;
if (game[2] === "*") {
if (result.length !== 0) result[result.length - 1] *= 2;
//이미 값이 있으면 마지막 값에 2를 곱하고
option = 2;
}
if (game[2] === "#") option = -1;
result.push(score ** bonus * option); // 값 , 지수, 옵션
}
return result.reduce((a, b) => a + b);
}