반응형
후위 표기식 계산을 스택을 이용하는 것은 이미 잘 알려져 있습니다. 이 문제는 \(+\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]);
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[C/C++] 백준 #1939 중량제한(그래프) (0) | 2022.11.19 |
---|---|
[C/C++] 백준 #1937 욕심쟁이 판다(동적 계획법) (0) | 2022.11.17 |
[C/C++] 백준 #1932 정수 삼각형(동적 계획법) (0) | 2022.11.14 |
[C/C++] #1931 회의실 배정(탐욕) (0) | 2022.11.13 |
[C/C++] 백준 #1929 소수 구하기(에라토스테네스의 체) (0) | 2022.11.11 |
댓글