C++/programmers 코딩테스트(level 1) C++

[C/C++] programmers Level 1 [1차] 다트 게임

CE : 하랑 2023. 10. 25. 12:43

 

 

 

[1차] 다트 게임

 

 

코드

 

#include <string>
#include <vector>

using namespace std;

int solution(string dartResult) {
    int answer = 0; // 결과값
    int numindex=0; // num -> index
    string result=""; // 다트 점수 및 영역, 옵션 표시
    
    vector<int> num;
    
    for(int i=0;i<dartResult.size();i++){
     
        if(dartResult[i]>='0' && dartResult[i]<='9'){ // 숫자 인 경우 result에 계속 이어 붙임
            result=result+dartResult[i];
        }else if(dartResult[i]=='S'){ // dartResult[i]^1
            num.push_back(stoi(result));
            numindex++; // num index값 증가
            result=""; // result 값 초기화
        }else if(dartResult[i]=='D'){ // dartResult[i]^2
            num.push_back(stoi(result)*stoi(result));
            numindex++; // num index값 증가
            result=""; // result 값 초기화
        }else if(dartResult[i]=='T'){ // dartResult[i]^3
            num.push_back(stoi(result)*stoi(result)*stoi(result));
            numindex++; // num index값 증가
            result=""; // result 값 초기화
        }else if(dartResult[i]=='*'){ // *2 -> 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 
            for(int i=numindex-2;i<=numindex-1;i++){
                num[i]=num[i]*2;
            }
           
        }else if(dartResult[i]=='#'){ // -> 당첨 시 해당 점수는 마이너스된다.
            num[numindex-1]=num[numindex-1]*(-1); // *와 #d은 중첩 가능하므로 *(-1) 
        }
    }
    
    for (auto n : num){
        answer=answer+n;
    }
    
    return answer;
}