프로그래머스/Level_1

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

배발자 2022. 1. 23.

목차

    반응형

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

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

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

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

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

    스타상(*)해당 점수와 바로 전에 얻은 점수를 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

     

    반응형

    댓글