3+5*2/(7-2)를 후위식으로 바꿔보면


연산자와 숫자를 분리해서


우선순위를 찾을 tmp와 답을 기록할 res를 만든다


연산자 우선순위 규칙


1.괄호가 첫번째 이고


2.곱하기 나누기가 두번째이고


3.더하기나 빼기가 마지막이다


4.같은 우선순위의 연산자를 만나면 왼쪽이 우선한다



방법


리스트의 길이만큼 포문을 돌면서

숫자를 만나면 res에 누적하고

연산자를 만나면 tmp에 쌓아뒀다가

우선순위가 낮은 연산자를 만나면 res에 누적한다


ex)3+5*2/(7-2)


1회 3

후위표기식이니까 숫자를 만나면 바로 res에 넣는다


tmp res 3


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

2회 +

우선순위를 찾기위해 +를 tmp에 넣는다


tmp + res 3


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

3회 5

숫자니까 res에 넣는다


tmp + res 35


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

4회 *

우선순위를 찾기위해 *를 tmp에 넣는다


tmp +* res 35


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

5회 2

숫자니까 res에 넣는다


tmp +* res 352


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

6회 /

왼쪽에 있는 *가 우선순위가 높으니까

res에 누적하고 tmp에 /를 넣는다


tmp +/ res 352*


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


7회 (

괄호는 첫번째 우선순위다

여는괄호를 만나면 tmp에 넣어뒀다가

닫는괄호를 만나면 앞의 연산자를 모두 연산처리 한다


tmp +/( res 352*


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

8회 7

7은 숫자니까 res에 넣는다


tmp +/( res 352*7


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

9회 -

두번째 연산순위 -는 tmp에 넣고

닫는괄호가 나올때 까지 누적한다


tmp +/(- res 352*7


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

10회 2

2는 숫자니까 res에 넣는다


tmp +/( res 352*72


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

11회 )

닫는괄호를 만나면 여는괄호를 만날때까지 팝하고

그 사이의 연산자들을 res에 누적


tmp +/ res 352*72-


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

여는괄호~닫는괄호를 다 처리하고 스택에 남은것을 res에 누적

tmp res 352*72-/+


꿈★은 이루어진다

내일채움공제 되는 중소기업 가자 화이팅!