[프로그래머스] [1차] 다트 게임
문제 설명
https://programmers.co.kr/learn/courses/30/lessons/17682
제한사항
풀이
20분
조건대로 문자열을 파싱하는 문제였다.
코드
// 9:00 ~ 9:20
#include <string>
using namespace std;
int solution(string dartResult) {
int answer = 0;
int scores[3] = {0,};
int idx = 0;
for(int i = 0; i < dartResult.length(); ++i){
char c = dartResult[i];
if(c >= '0' && c <= '9'){
if(c == '1' && i != dartResult.length() - 1 && dartResult[i + 1] == '0'){
scores[idx] = 10;
i += 1;
} else{
scores[idx] = c - '0';
}
idx += 1;
} else if(c == 'S') continue;
else if(c == 'D') scores[idx - 1] = scores[idx - 1] * scores[idx - 1];
else if(c == 'T') scores[idx - 1] = scores[idx - 1] * scores[idx - 1] * scores[idx - 1];
else if(c == '*'){
scores[idx - 1] *= 2;
if(idx - 2 >= 0) scores[idx - 2] *= 2;
}
else if(c == '#') scores[idx - 1] *= -1;
}
for(int i =0; i < 3; ++i){
answer += scores[i];
}
return answer;
}