https://school.programmers.co.kr/learn/courses/30/lessons/17682
개 단순한 구현형 코드..
예외사항을 잘 체크하자.
내가 걸린 예외는 그냥 isdigit()
로 숫자 더해버려서
10은 1 0 으로 나뉘어버렸다.
정신을 차려보도록 하자
제시된 조건을 잘 읽자.
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int solution(string dartResult) {
int answer = 0;
vector<int> scores;
int scoreCnt = -1;
string tempScore = "";
for (int i = 0 ; i < dartResult.length() ; i++) {
if (isdigit(dartResult[i])) {
tempScore += dartResult[i];
}
else if (!tempScore.empty()) {
scores.emplace_back(stoi(tempScore));
tempScore = "";
scoreCnt++;
}
if (dartResult[i] == 'D') scores[scoreCnt] = pow(scores[scoreCnt], 2);
else if (dartResult[i] == 'T') scores[scoreCnt] = pow(scores[scoreCnt], 3);
else if (dartResult[i] == '#') scores[scoreCnt] *= -1;
else if (dartResult[i] == '*') {
scores[scoreCnt] *= 2;
if (scoreCnt > 0) scores[scoreCnt-1] *= 2;
}
}
for (auto& s : scores) {
answer += s;
}
return answer;
}