알고리즘 문제/C++

[프로그래머스] Level1 : [1차]다트 게임 - C++

lingk 2020. 7. 6. 15:31

 

#include <string>
#include <vector>
using namespace std;

int solution(string dartResult) {
    int answer = 0;
    vector<int> ans;
    int ansIdx=-1;
    for(int i=0;i<dartResult.size();i++){
        switch(dartResult[i]){
            case 'S':break;
            case 'D':
                ans[ansIdx]=ans[ansIdx]*ans[ansIdx];break;
            case 'T':
                ans[ansIdx]=ans[ansIdx]*ans[ansIdx]*ans[ansIdx];break;
            case '*':
                if(ansIdx==0)
                    ans[ansIdx]*=2;
                else{
                    ans[ansIdx-1]*=2;
                    ans[ansIdx]*=2;
                }
                break;
            case '#':
                ans[ansIdx]*=(-1);
                break;
            default:
                ansIdx++;
                if(dartResult[i]-'0'==1&&dartResult[i+1]-'0'==0)
                {ans.push_back(10);i++;}
                else
                    ans.push_back(dartResult[i]-'0');
                break;
        }
    }
    for(int i=0;i<ans.size();i++){
        answer+=ans[i];
    }
    return answer;
}

 

 

숫자를 기준으로 끊어 벡터에 추가하고 더해주는 방법으로 구성하였다.

반응형