알고리즘 문제/C++
[프로그래머스] Level1 : [1차]다트 게임 - C++
lingk
2020. 7. 6. 15:31
#include <string>
#include <vector>
using namespace std;
int solution(string dartResult) {
int answer = 0;
vector<int> ans;
int ansIdx=-1;
for(int i=0;i<dartResult.size();i++){
switch(dartResult[i]){
case 'S':break;
case 'D':
ans[ansIdx]=ans[ansIdx]*ans[ansIdx];break;
case 'T':
ans[ansIdx]=ans[ansIdx]*ans[ansIdx]*ans[ansIdx];break;
case '*':
if(ansIdx==0)
ans[ansIdx]*=2;
else{
ans[ansIdx-1]*=2;
ans[ansIdx]*=2;
}
break;
case '#':
ans[ansIdx]*=(-1);
break;
default:
ansIdx++;
if(dartResult[i]-'0'==1&&dartResult[i+1]-'0'==0)
{ans.push_back(10);i++;}
else
ans.push_back(dartResult[i]-'0');
break;
}
}
for(int i=0;i<ans.size();i++){
answer+=ans[i];
}
return answer;
}
숫자를 기준으로 끊어 벡터에 추가하고 더해주는 방법으로 구성하였다.
반응형