Algo 쓰자

[Programmers] (Javascript) 다트게임 본문

💯 CodingTest/Programmers

[Programmers] (Javascript) 다트게임

S.Honey 2022. 4. 21. 15:13
function solution(dartResult) {
    var bonus = new Map([
        ['S',1],
        ['D',2],
        ['T',3]
    ]);
    var option = new Map([
        ['*', 2],
        ['#', -1],
    ]);
    
    var reg = new RegExp(/\d*[SDT][*#]*/,'g');
    var list = dartResult.match(reg);

    var score = new Map();
    var index = 0;
    for (const data of list)
    {   
        var num = parseInt(data.match(/\d+/g));
        var bo = data.match(/[SDT]/g).toString();
        //string의 경우 toString을통해 arr => string으로 변환해주어야 한다.
        score.set(index, num ** bonus.get(bo));

        var op = data.match(/[*#]/g);
        
        if (op !== null)
        {   
            op = op.toString();

            if (op === '*' && index >= 1)
            {
                score.set(index - 1, score.get(index-1) * 2);
            }
            
            score.set(index, score.get(index) * option.get(op));
        }

        index += 1
    }
    
    var answer = 0
    for (var i =0; i<3; i++)
    {
        answer += score.get(i);
    }

    return answer;
}