코딩테스트 #36 다트 게임 (카카오 블라인드 채용)

Jake Seo·2020년 7월 15일
0

프로그래머스 LV1

목록 보기
36/36

문제

풀이

먼저 하나의 계산식이 구성되는 패턴에 대해 정의했습니다.

하나의 계산식은 [숫자], [제곱의계수(SDT)], [상점(2배 혹은 -1배)] 이런 패턴과 같이 이루어져있습니다.

그래서 이 패턴을 정규표현식(/\d+(S|D|T)(\*|\#)?/g)을 이용해 검출하였습니다.

그 이후에는 각 문자에 따라 잘 계산될 수 있도록 처리를 해주었습니다.

let solution = (dartResult) => {
    let numbers = [];

    dartResult.match(/\d+(S|D|T)(\*|\#)?/g).map((token, index) => {

        let sdt = token.includes("S") ? 1 : token.includes("D") ? 2 : 3;
        let award = token.includes("*") ? 2 : token.includes("#") ? -1 : 1;

        if(index !== 0 && award === 2)
            numbers[index-1] *= 2;
        
        numbers.push(Math.pow(+token.match(/\d+/g)[0], sdt) * award);
    });

    return numbers.reduce((a, c) => a + c);
}
profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글