와이유스토리

[구현] 프로그래머스 [1차] 다트 게임 C++ 본문

코딩테스트/구현|기타

[구현] 프로그래머스 [1차] 다트 게임 C++

유(YOO) 2022. 2. 4. 10:33

 

https://programmers.co.kr/learn/courses/30/lessons/17682

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

#include <string>
#include <iostream>

using namespace std;

int solution(string dartResult) {
    int answer = 0;
    int before = 0 ;
    
    for(int i=0; i<dartResult.length(); i++) {
        if ((dartResult[i] >='0') && (dartResult[i] <= '9')) {
            int score = dartResult[i]-'0';  // stoi()
            
            if (dartResult[i] =='1') {
                if (dartResult[i+1] == '0') {
                    score = 10;
                    i++; // 인덱스 조심
                }
            }
            
            while(true) {
                i++;
                // 인덱스 에러 조심 10D10T*10S
                if (i == dartResult.length()) {
                    answer += score;
                    break;
                }
                
                if (dartResult[i] == '*') {
                    answer = (answer - before) + (before + score) * 2;
                    before = score * 2;
                    break;
                }
                else if (dartResult[i] == '#') {
                    answer -= score;
                    before = score * (-1);
                    break;
                }
                else if ((dartResult[i] >='0') && (dartResult[i] <= '9')) {
                    answer += score;
                    i--;
                    before = score;
                    break;
                }
                
                if (dartResult[i] == 'D') score = score * score;
                else if (dartResult[i] == 'T') score = score * score * score;
            }
        }
    }
    
    return answer;
}
Comments