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

less than 1 minute read

문제 설명

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;
}