본문 바로가기
--------------------***/자료구조

스택 중위표기식을 후위표기식으로 전환

by kk님 2020. 2. 20.

다음 두가지 단계에 대해 명확히 구분하셔야 합니다.

 

출력하는것과 스택에 넣는 방법이 다르기 때문에 구분해서 기억하셔야 합니다.

1. 후위표기식으로 변환

2. 후위표기 계산

 

다음 식을 후위표기식으로 전환하는 연습을 해보도록 하겠습니다.

 

A*B-C/D

 

주의할 점

1) 연산자 우선순위에 따라 괄호를 표시하세요

2) 출력하는것과 스택에 넣는 것의 기준을 명확히 하세요

 

{(A*B)-(C/D)}

가장 간단하게는, 오른쪽 괄호가 나오면 연산자를 적어주는 겁니다.

 

(AB)*

(CD)/

 

그리고

(AB)*  : A와B를 곱한 결과를 X라고 가정합니다.

(CD)/ : C와D를 나눈 결과를 Y라고 가정합니다.

 

그렇다면

위의 식의 결과를 다시 표현해보도록 하겠습니다.

{X-Y}

따라서

{XY}-

로 표현하실 수 있습니다.

 

그리고 X와 Y에 다시 원래의 수식을 대입합니다.

 

(AB)*  : A와B를 곱한 결과를 X라고 가정했습니다.

(CD)/ : C와D를 나눈 결과를 Y라고 가정했습니다.

 

{(AB)*(CD)/}-

그리고 괄호를 없애줍니다.

 

AB*CD/-

후위 표기식 전환 방법입니다.

오른쪽 괄호를 만나는 부분에 연산자를 표기한다는 것을 기억하세요.

 

후위표기식으로 변환하기 위해서는

출력스택을 기억하셔야 합니다. 어느때 출력을 하고 어느때 스택에 넣는지 확인하셔야 합니다.

 

1) 출력은 피연산자

2) 스택에 push / pop 하는 것은 연산자

 

후위표기식 계산은 스택을 기억하셔야 합니다.