본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 1935번 : 후위 표기식 2 답

반응형

www.acmicpc.net/problem/1935

 

1935번: 후위 표기식2

첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이

www.acmicpc.net

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());
}