-
1222.계산기1알고리즘/SW Expert Academy 2020. 3. 23. 21:59
이번문제는 후위계산식으로 만들어서 계산하는 문제이다.
그렇게 어려운 난이도는 아니였다. 후위계산법을 제대로 이해하고 문제를 풀면된다.
연산자가 '+' 만 주어졌기 때문에 예외처리할게 많지 않았다.
아마 문제에 숫자가 붙은걸로봐서 앞으로 연산자들이 추가될 것 같은 예감이 든다ㅋㅋㅋ
허접한 코드로 일단 푸는 것에 의의를 두었다.
< Code 설명 >
#include <iostream> #include <stack> #include <queue> #include <string.h> using namespace std; int main() { int n; for(int k=1; k<=10; k++){ cin >> n; string str; cin >> str; stack <char>s1; queue<char>s2; char v; for(int i=0; i<n; i++){ if(str[i]=='+'){ if(!s1.empty()){ if(!memcmp(&s1.top(),&str[i],1)){ s2.push(v); s1.pop(); } } s1.push(str[i]); v = s1.top(); } else s2.push(str[i]); if(i==n-1){ s2.push(s1.top()); s1.pop(); } } int ans=s2.front()-48, a=0; s2.pop(); while(!s2.empty()){ if(s2.front()=='+'){ ans+=a; s2.pop(); } else { a=s2.front()-48; s2.pop(); } } cout << "#"<< k << " " << ans << endl; } return 0; }
-> 풀긴풀었는데 뭔가 더러운 느낌.. ㅋㅋㅋ
앞으로 예상했던 예외처리가 늘어날 때 깔끔하게 짜야겠다ㅎㅎ
반응형'알고리즘 > SW Expert Academy' 카테고리의 다른 글
1226.미로1 & 1227.미로2 (0) 2020.03.26 1225. 암호생성기 (0) 2020.03.24 1224.계산기3 (0) 2020.03.24 1223.계산기2 (0) 2020.03.23 1218. 괄호 짝짓기 풀이 (0) 2020.03.04 댓글