본문 바로가기

problem solving

[프로그래머스][1차] 다트 게임

간단한 구현 문제

#include <string>
 
using namespace std;
 
int solution(string dartResult) {
    int answer = 0;
    
    int val[3= { 0 };
    int pos = 0, count = -1, mul;
    while(pos <  dartResult.size()) {
        switch(dartResult[pos]) {
            case 'S':  mul = val[count];
                for(int i = 0; i < 1 - 1; i++) { val[count] *= mul; }
                break;
            case 'D': mul = val[count];
                for(int i = 0; i < 2 - 1; i++) { val[count] *= mul; }
                break;
            case 'T': mul = val[count];
                for(int i = 0; i < 3 - 1; i++) { val[count] *= mul; }
                break;
            case '*': val[count] *= 2;
                if(count - 1 >= 0) val[count - 1*= 2;
                break;
            case '#': val[count] *= -1;
                break;
            default:
                count++;
                val[count] = 0;
                while(dartResult[pos] - '0' >= 0 && dartResult[pos] - '0' < 10) {
                    val[count] += dartResult[pos] - '0';
                    if(dartResult[pos + 1- '0' < 0 || dartResult[pos + 1- '0' > 9) { break; }
                    val[count] *= 10;
                    pos++;
                }
        }
        pos++;
            
    }
    
    for(int i = 0; i < 3; i++) answer += val[i];    
    return answer;
}
cs