function solution(input) {
var answer = 0
const filteredNum = input.split(/[0-9]/)
const filteredChar = input.split(/[A-Z*#]/)
const numbers = filteredChar.filter((v) => v !== "")
const chars = filteredNum.filter((v) => v !== "")
let res = []
let num = 0
for (let i = 0; i < chars.length; i++) {
const number = numbers[i]
// 제곱수를 구하는 부분
if (chars[i].includes("S")) {
num = Math.pow(number, 1)
} else if (chars[i].includes("D")) {
num = Math.pow(number, 2)
} else if (chars[i].includes("T")) {
num = Math.pow(number, 3)
}
if (chars[i].includes("#")) {
num *= -1
} else if (chars[i].includes("*")) {
// 1차시도에 *이 있을 경우
if (i === 0) {
num *= 2
} else {
// 1차시도 외에 *이 있을 경우
num *= 2
res[i - 1] = res[i - 1] * 2
}
}
res.push(num)
}
const tt2 = res.reduce((acc, cur) => (acc += cur))
answer = tt2
return answer
}
solution("1D2S#10S")
// solution("1D2S0T")
// solution("1S*2T*3S")
// solution("1D#2S*3S")
// solution("1T2D3D#")
// solution("1D2S3T*")
주어진 문자열을 숫자기준, 문자기준으로 각각 split
하고 공백을 제거
각각의 인덱스값에 알맞은 연산을 해준다.