Basic/Algorithm

다트 게임

egas 2021. 8. 4. 01:53

알고리즘도 풀어보자. 

https://programmers.co.kr/learn/courses/30/lessons/17682?language=javascript 

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

 

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