[Javascript] 다트 게임 (프로그래머스 level 1)

Chaedie·2022년 6월 23일
0

Javascript - PS

목록 보기
18/24
post-custom-banner

내 풀이

function solution(dartResult) {
    var answer = 0;
    let len = dartResult.length;
    let score = [];
    let idx = 0;

    for(let i = 0; i < len; i++) {
        if (isNumber(dartResult[i])) {
            if (isNumber(dartResult[i + 1])) {
                score.push(10)
                idx = score.length - 1;
                i++;
                continue;
            } else {
                score.push(Number(dartResult[i]));
                idx = score.length - 1;
                continue;    
            }
        }
        switch(dartResult[i]) {
            case 'S':
                score[idx] = Math.pow(score[idx], 1)
                break;
            case 'D':
                score[idx] = Math.pow(score[idx], 2)
                break;
            case 'T':
                score[idx] = Math.pow(score[idx], 3)
                break;
            case '*':
                if (idx === 0) {
                    score[idx] = score[idx] * 2
                } else {
                    score[idx - 1] = score[idx - 1] * 2
                    score[idx] = score[idx] * 2
                }
                break;
            case '#':
                score[idx] = score[idx] - (2 * score[idx]);
                break;
        }

    }  
    answer = score.reduce((acc, cur) => acc += cur);
    return answer;
}

function isNumber (char) {
    let num = Number(char);
    if(num >= 0 && num <= 9) {
        return true;
    }
}

이렇게 푸는게 맞나? 싶을 정도의 “구현 원 툴” 문제라고 느꼈습니다. 물론 구현력이 부족해 시간이 많이 걸렸네요… 그나마 혼자 힘으로 풀 수 있었다는게 다행입니다.

더 좋은 풀이가 뭐가 있을지 궁금하네요.

다른 사람 풀이

다른 사람들의 풀이를 좀 보니 정규식을 이용해 걸러내는 부분이 많네요. 저는 아직 정규식을 몰ㄹ…. 허허

배운 점, 느낀 점

숫자 거르는 부분, 스위치 문 부분 또한 함수로 나누는게 더 깔끔했을것 같네요.

멋지게 풀진 못해도 깔끔하게 풀 수 있도록 연습해야겠습니다. 주어진 실력 내에서 최대한 잘 풀어내는 방법은 "깔끔하게 푸는 것" 같네요.

profile
TIL Blog - Today's Intensive Learning!
post-custom-banner

0개의 댓글