[1차] 다트 게임

magicdrill·2025년 1월 3일
0

[1차] 다트 게임

#include <string>
#include <iostream>
#include <cctype>

using namespace std;

int solution(string dartResult) {
    int answer = 0;
    int i = 0, j, current_num = 0, current_score = 0, previous_score = 0;
    
    //S : 해당 점수
    //D : 해당 점수 제곱
    //T : 해당 점수 세제곱
    //* : 해당 점수와 바로 전에 얻은 점수 2개
    //# : 해당 점수 * -1
    
    while(i < dartResult.size()){
        
        //현재 정수 구하기
        current_num = 0;
        while(isdigit(dartResult[i])){
            current_num = current_num * 10 + (dartResult[i] - '0');
            i++;
        }
        cout << current_num << "\n";
        
        //보너스 구하기
        if(dartResult[i] == 'S'){
            current_score = current_num;
        }
        else if(dartResult[i] == 'D'){
            current_score = current_num * current_num;
        }
        else{//'T'
            current_score = current_num * current_num * current_num;
        }
        i++;
        
        //옵션 구하기
        if(i < dartResult.size() && (dartResult[i] == '*' || dartResult[i] == '#')){
            if(dartResult[i] == '*'){
                answer += previous_score;
                current_score = current_score * 2;
            }
            else{
                current_score = current_score * (-1);
            }
            i++;
        }
        
        answer += current_score;
        previous_score = current_score;
        cout << "answer : " << answer << "\n";
        cout << "current_score : " << current_score << "\n";
        cout << "previous_score : " << previous_score << "\n";
    }
    
    return answer;
}

0개의 댓글