Study/Coding Test

[2018 1차 KAKAO] 다트 게임

_gayeon 2021. 10. 7. 23:25

https://programmers.co.kr/learn/courses/30/lessons/17682

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

 

#include <string>
#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

int solution(string dartResult) {
    int answer = 0;
    vector<int> v;
    
    int idx=0;
    int v_idx = -1;
    int score;
    char bonus, option;
    while(idx < dartResult.size()){
        if(dartResult[idx]>='0' && dartResult[idx]<='9'){
            if(dartResult[idx] == '1' && dartResult[idx+1] == '0'){
                score = 10;
                idx++;
            }
            else{
                score = dartResult[idx] - '0';
            }
            idx++;
            continue;
        }
        else if(dartResult[idx] == 'S'){
            v.push_back(score);
            v_idx++;
        }
        else if(dartResult[idx] == 'D'){
            v.push_back(pow(score,2));
            v_idx++;
        }
        else if(dartResult[idx] == 'T'){
            v.push_back(pow(score,3));
            v_idx++;
        }
        else if(dartResult[idx] == '*'){
            v[v_idx] *=2;
            if(v_idx > 0)
                v[v_idx-1] *=2;
        }
        else if(dartResult[idx] == '#'){
            v[v_idx] *= (-1);
        }
        idx++;
    }
    
    for(int i=0; i<v.size(); i++){
        answer += v[i];
        cout << v[i] << endl;
    }
    return answer;
}

 

큰 어려움없이 풀수 있는 문제였다.