생각하기
문자를 숫자화하여서 index 삼아 배열에 숫자를 저장
A~Z사이면 stack에 넣고
연산자이면 stack에서 두개를 꺼내서(꺼낼때 변수 저장 거꾸로) 둘을 연산 후 다시 stack에 push
#include <iostream>
#include <vector>
#include <map>
#include <stack>
#include <string>
#include <algorithm>
using namespace std;
#define endl '\n'
#define MAX 1000000
int N;
int alpha[26];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin>>N;
string input;
stack<double> st;
cin>>input;
char letter = 'A';
double number;
for(int i=0; i<N; i++){
cin>>number;
alpha[i] = number;
}
double a, b;
for(int i=0; i<input.length(); i++){
if(input[i]>='A' && input[i]<='Z'){
st.push(alpha[input[i]-'A']);
}
else{
b = st.top();
st.pop();
a = st.top();
st.pop();
if(input[i]=='+'){
st.push(a+b);
}
else if(input[i]=='*'){
st.push(a*b);
}
else if(input[i]=='/'){
st.push(a/b);
}
else if(input[i]=='-'){
st.push(a-b);
}
}
}
cout<<fixed;
cout.precision(2);
cout<<st.top()<<endl;
}
'알고리즘 > Stack & Queue & Deck' 카테고리의 다른 글
프로그래머스 - 고득점 킷 : 기능개발 (0) | 2022.03.25 |
---|---|
[Queue] 백준 1158 - 요세푸스 문제 (0) | 2021.02.26 |
[Stack] 백준 9012번 - 괄호 (0) | 2021.02.25 |