본문 바로가기
Programming/BOJ

[C/C++] 백준 #1935 후위 표기식2(스택)

by 작은별하나 2022. 11. 16.
반응형

후위 표기식 계산을 스택을 이용하는 것은 이미 잘 알려져 있습니다.  이 문제는 \(+\alpha\)로 변수의 개념까지 둔 문제입니다.

 

제 경우에는 식과 변수값을 미리 다 읽고, 식을 읽으면서 스택에서 계산을 바로 하도록 작성했습니다.

 

후위 표기식 알고리즘은 간단한 스택 알고리즘을 작성하시면 되는 것이라 크게 어려운 점은 없습니다.

 

제가 작성한 소스입니다.

//----------------------------------------------------------
//    baekjoon #1935 - Postfix Equation
//        - by Aubrey Choi
//        - created at 2020-01-10
//----------------------------------------------------------
#include <stdio.h>
#include <assert.h>

int main()
{
    int v[26], n, i, sp=0;  char ex[104]; double stack[100];
    scanf("%d",&n);
    scanf("%s", ex);
    for(i=0;i<n;i++) scanf("%d",v+i);
    for(i=0;ex[i];i++)
    {
        if(ex[i]>='A'&&ex[i]<='Z') stack[sp++]=v[ex[i]-'A'];
        else if(ex[i]=='+') stack[sp-2]+=stack[sp-1],sp--;
        else if(ex[i]=='-') stack[sp-2]-=stack[sp-1],sp--;
        else if(ex[i]=='*') stack[sp-2]*=stack[sp-1],sp--;
        else if(ex[i]=='/') stack[sp-2]/=stack[sp-1],sp--;
        else assert(ex && 0);
    }
    printf("%.2lf\n", stack[0]);
}

evaluating postfix expression

728x90

댓글