코드가 좀 난잡하다....
입력한 숫자와 db를 한자리씩 비교하였다.
여기서 seven같이 같은 문자가 여러개 들어가는 경우가 있어서 찾아진 것은 *로 치환하였다.
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 67 68 69 70 71 72 73 74 75 76 | #include<iostream> #include<algorithm> #include<vector> using namespace std; int main(){ vector<string> to_ten{ "zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine" , "ten" }; vector<string> input_result; vector< int > last_result; char con_tmp; string ori= "" ; string mix= "" ; string result_tmp= "" ; char tmp; vector< int > int_ori; vector< int > int_mix; vector< char > con; int num,i,j,index,find,cnt; int calc; cin >> num; for (i = 0; i < num; i++){ cin >> ori >> con_tmp >> mix >> tmp >> result_tmp; con.push_back(con_tmp); input_result.push_back(result_tmp); for (j = 0; j < 11; j++){ if ( to_ten[j].compare(ori) == 0 ) int_ori.push_back(j); if ( to_ten[j].compare(mix) == 0 ) int_mix.push_back(j); } } for (i = 0; i < num; i++){ switch (con[i]){ case '+' : last_result.push_back(int_ori[i]+int_mix[i]); break ; case '-' : last_result.push_back(int_ori[i]-int_mix[i]); break ; case '*' : last_result.push_back(int_ori[i]*int_mix[i]); break ; } } for (i = 0; i < num; i++){ if (last_result[i] < 0 || last_result[i] > 10){ cout << "No" << endl; } else { index = last_result[i]; cnt = 0; for (j = 0; j < input_result[i].length(); j++){ find = input_result[i].find(to_ten[index][j]); if (find != -1){ input_result[i][find] = '*' ; cnt++; } } if (cnt ==input_result[i].length()) cout << "Yes" << endl; else cout << "No" << endl; } } |
'programming > 알고스팟' 카테고리의 다른 글
알고스팟 - 튜토리얼 URI (0) | 2020.05.15 |
---|---|
알고스팟 - 튜토리얼 HOTSUMMER (0) | 2020.05.15 |
알고스팟 - 튜토리얼 mispell (0) | 2020.05.14 |
알고스팟 - 튜토리얼 encrypt (0) | 2020.05.14 |
알고스팟 - 튜토리얼 LECTURE (0) | 2020.05.14 |
댓글