반응형
stack을 이용해 후위 표기식을 구현했습니다.
풀이방법
1. 알파벳이라면 stack push해줍니다.
2. 알파벳이 아니라면 2개의 피연산자를 pop한 뒤 결과값을 stack push해줍니다.
Code
#include <bits/stdc++.h>
using namespace std;
string operation;
stack <double> calculator;
map <char,double> m;
int main(){
int n;
cin >> n >> operation;
for(int i = 0; i < n; i ++){
int value;
cin >> value;
m['A'+ i] = value;
}
for(int i = 0; i < operation.size(); i++){
if(isalpha(operation[i])){
calculator.push(m[operation[i]]);
}else{
double a = calculator.top();
calculator.pop();
double b = calculator.top();
calculator.pop();
switch(operation[i]){
case '*': calculator.push(b*a); break;
case '/': calculator.push(b/a); break;
case '+': calculator.push(b+a); break;
case '-': calculator.push(b-a); break;
}
}
}
printf("%.2f",calculator.top());
}
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 3986번 : 좋은 단어 (0) | 2021.01.20 |
---|---|
(Python) - 백준(BOJ) 2338번 : 긴자리 계산 답 (0) | 2021.01.20 |
(C++) - 백준(BOJ) 1972번 : 놀라운 문자열 답 (0) | 2021.01.13 |
(C++) - 백준(BOJ) 1822번 : 차집합 답 (0) | 2021.01.11 |
(C++) - 백준(BOJ) 1302번 : 베스트셀러 답 (2) | 2021.01.11 |