본 블로그는 비상업적, 비영리적 용도의 학업만을 위해 글을 게시합니다.
#include <string>
#define SINGLE(X) (X)
#define DOUBLE(X) (X)*(X)
#define TRIPLE(X) (X)*(X)*(X)
using namespace std;
int solution(string dartResult) {
int now = 0, before = 0;
int answer = 0;
for(int i = 0; i < dartResult.length(); i+=2)
{
now = dartResult[i] - '0';
if(dartResult[i + 1] == '0')
{
now = 10;
i++;
}
if(dartResult[i + 1] == 'S')
now = SINGLE(now);
else if(dartResult[i + 1] == 'D')
now = DOUBLE(now);
else if(dartResult[i + 1] == 'T')
now = TRIPLE(now);
if(dartResult[i + 2] == '*')
{
now <<= 1;
answer += before;
i++;
}
else if(dartResult[i + 2] == '#')
{
now = -now;
i++;
}
answer += now;
before = now;
}
return answer;
}