https://programmers.co.kr/learn/courses/30/lessons/17682
#include <string>
#include <vector>
#include <math.h>
using namespace std;
void charCmp(char& dart, int part, vector<int>& score) {
switch (dart) {
case 'S':
score.push_back(part);
break;
case 'D':
score.push_back(pow(part, 2));
break;
case 'T':
score.push_back(pow(part, 3));
break;
case '*':
if(score.size() == 1) score[0] *= 2;
else {
score.back() *= 2;
score[score.size() -2] *= 2;
}
break;
case '#':
score[score.size() - 1] *= -1;
break;
}
}
int solution(string dartResult) {
int answer = 0;
int part = 0;
vector<int> saveScore;
for (int i = 0; i < dartResult.length(); ++i)
{
if (isdigit(dartResult[i])) {
part = part * 10 + dartResult[i] - '0';
}
else {
charCmp(dartResult[i], part, saveScore);
part = 0;
}
}
for (const auto& s : saveScore) {
answer += s;
}
return answer;
}