[프로그래머스] Lv1. [1차] 다트 게임 - JavaScript

이상돈·2023년 7월 12일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 1

출처 : 프로그래머스 - [1차] 다트 게임

문제

제한사항

📌 내가 생각한 풀이

numStack을 만들어주고 그 안에 숫자만 넣는다. 그 이후 주어진 조건에 맞게 numStack 안에있는 숫자를 변화시키고 마지막에 총합을 구하자!

function solution(dartResult) {
    var answer = 0;
    var sum = 0;
    var numStack = [];
    var regex = /[0-9]/g
    let splited = dartResult.split('');
    for(var i =0; i<splited.length; i++){
        if(regex.test(splited[i])){
            if(splited[i] == 1){
                if(splited[i+1] == 0){
                    i++;
                    numStack.push(10)
                    
                }else{
                    numStack.push(parseInt(splited[i]));
                }
            }else{
                numStack.push(parseInt(splited[i]))
            }
        }else if(splited[i] === 'S' || splited[i] === 'D' || splited[i] === 'T'){
            let popped = numStack.pop();
            switch(splited[i]){
                case 'S':
                    popped = Math.pow(popped,1)
                    break;
                case 'D':
                    popped = Math.pow(popped,2)
                    break;
                case 'T':
                    popped = Math.pow(popped,3)
                    break;
            }
            numStack.push(popped);
        }else{
            if(splited[i] === '*'){
                let popped = numStack.pop();
                if(numStack.length === 0){
                    popped *=2;
                    numStack.push(popped);
                }else{
                    let popped2 = numStack.pop();
                    popped *=2;
                    popped2 *=2;
                    numStack.push(popped2);   
                    numStack.push(popped);
                }
            }else{
                let popped = numStack.pop();
                popped = popped*(-1);
                numStack.push(popped);
            }
        }
    }
    return answer = numStack.reduce((prev,now)=>prev+=now);
    
}

📌 느낀점

주어진 경우만 잘 판단해서 넣으면 쉽게 풀리는 문제였다. pop을 여러번 하고 다시 넣어 줄 때 순서가 바뀔 수 있음에 주의하여 풀자

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글