주어진데로 구현하면 되는 쉬운 문제이다.
코드는 아래와 같다.
#include <string>
#include <vector>
#include <cmath>
using namespace std;
bool is_number(char a)
{
return '0' <= a && a <= '9';
}
int solution(string dartResult) {
int answer = 0;
int idx = 0;
vector<int> result;
for(int i=0;i<dartResult.size();i++) {
if(dartResult[i] == '*') {
if(idx > 1)
result[idx - 2] *= 2;
result[idx - 1] *= 2;
} else if(dartResult[i] == '#') {
result[idx - 1] *= -1;
} else if(is_number(dartResult[i])) {
int n;
if(is_number(dartResult[i + 1])) {
n = 10;
i++;
} else
n = dartResult[i] - '0';
if(dartResult[i + 1] == 'D')
n = pow(n, 2);
else if(dartResult[i + 1] == 'T')
n = pow(n, 3);
result.push_back(n);
idx++;
}
}
for(auto it : result)
answer += it;
return answer;
}