알고리즘도 풀어보자.
https://programmers.co.kr/learn/courses/30/lessons/17682?language=javascript
const bonusType = {
S: (x)=>x,
D: (x)=>Math.pow(x, 2),
T: (x)=>Math.pow(x, 3),
}
const pointType = {
'*': 2,
'#': -1
}
function solution(dartResult) {
const scores = dartResult.split(/\D/).filter((score) => score !== "");
const bonus = dartResult.split(/\d/).filter((x) => x !== "");
let result = []
let prevResultBonus = []
result = scores.map((x, i) => {
if (bonus[i][1] === '*') {
if (i > 0) {
prevResultBonus.push(i - 1)
}
return bonusType[bonus[i][0]](x) * 2;
}
if (bonus[i][1] === '#') {
return bonusType[bonus[i][0]](x) * -1;
}
return Number(bonusType[bonus[i][0]](x))
})
if (prevResultBonus.length > 0) {
prevResultBonus.map((x, i)=> result[x] = result[x] * 2)
}
return result.reduce((acc, cur)=> (acc+=cur))
}
728x90
'Basic > Algorithm' 카테고리의 다른 글
숫자 문자열과 영단어 (0) | 2021.08.13 |
---|---|
비밀지도 (0) | 2021.08.13 |
로또의 최고 순위와 최저 순위 (0) | 2021.08.13 |
댓글