프로그래머스/Level_1

[Level_1 / C++ / 카카오] [1차] 다트 게임

배발자 2022. 1. 23.
반응형

아이유를 정말 좋아하기 때문에 이 문제는 꼭 풀려고 마음 먹었다. 

이 문제는 하라는대로 풀면 된다. 

코드를 봐도 쉽게 이해할 수 있을거라고 생각한다.

다만, 저와 똑같은 실수를 하시는 분도 계실까봐 말씀드리지만, 

스타상(*)해당 점수와 바로 전에 얻은 점수를 2배하는 것이지, 이전에 얻은 모든 점수에 2배를 하는것이 아니다!
#include <string>
#include <vector> 
using namespace std;
int solution(string dartResult) {
    int answer = 0;
    string s= dartResult; 
    vector<int> v; 
    string s1=""; 
    for(int i=0; i<s.size(); i++){        
        if(s[i]>='0'&&s[i]<='9')s1+=s[i];        
        else if(s[i]=='*'||s[i]=='#'){
            if(s[i]=='*'){
                if(v.size()==1)v.back()*=2; 
                else {
                    v[v.size()-1]*=2; 
                    v[v.size()-2]*=2;                     
                }             
            }
            else v.back()*=-1;             
        }
        else{
            v.push_back(stoi(s1)); 
            s1="";             
            if(s[i]=='S') v.back()*=1;             
            else if(s[i]=='D') v.back()*=v.back();             
            else v.back()=v.back()*v.back()*v.back();            
        }             
    }       
    for(int i=0; i<v.size(); i++) answer+=v[i];     
    return answer;
}
 

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

 

programmers.co.kr

 

반응형

댓글