알고리즘
[카카오/신입공채] 다트게임 (난이도 하 정답률 73퍼)
심재철
2017. 10. 9. 19:40
이 문제도 if else떡칠만 하면 되는 쉬운문제인데 약간 함정을 파놓았다.
숫자가 0~9만 되는게 아니라 10까지도 된다는것과
스타상을 받으면 바로 전 숫자까지 2배를 시켜줘야 한다는점 등등..
문제 자체는 쉬운데 풀다가 계속 디테일을 놓쳤다
이것도 한 20분좀넘게 걸린거 같다 시간을 줄이자..
문제 이해하는게 더 오래걸린듯
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include <iostream> #include <algorithm> #include <vector> using namespace std; vector<int> result; int main() { string str; cin>>str; for(int i=0; i<str.size(); i++) { if(i+1<str.size() && str[i]=='1' && str[i+1]=='0') { result.push_back(10); } else if(str[i] >='0' && str[i]<='9') { result.push_back(str[i]-'0'); } else if(str[i] == 'D') { int back = result.back();result.pop_back(); back *= back;result.push_back(back); } else if(str[i] == 'T') { int back = result.back();result.pop_back(); back = back*back*back; result.push_back(back); } else if(str[i] == '*') { if(result.size()>=2) { int back1 = result.back(); result.pop_back(); int back2 = result.back(); result.pop_back(); back1 *=2; back2 *=2; result.push_back(back1);result.push_back(back2); } else{ int back1 = result.back(); result.pop_back(); back1 *=2; result.push_back(back1); } } else if(str[i] == '#') { int back1 = result.back();result.pop_back(); back1 *= -1; result.push_back(back1); } } int count =0; for(int i=0; i<result.size(); i++) { count += result[i]; } cout<<count<<endl; return 0; } | cs |