본문 바로가기

알고리즘문제풀이

[백준] 1918번: 후위표기식

문제

https://www.acmicpc.net/problem/1918


풀이

중위표기식(infix)을 후위표기식(postfix)로 변환하는 문제이다.


연산자의 위치에 따라 표기식의 이름이 달라진다.

전위표기식(prefix)  : * A B

중위표기식(infix)    : A * B

후위표기식(postfix) : A B *


스택을 이용해서 풀었다.


1. 피연산자일 경우 -> 결과문자열에 추가

2. 연산자일 경우

① '('

- 스택에 넣는다.

② ')'

- 스택의 top이 '(' 일때까지 top값을 결과문자열에 추가 & pop

- '('까지 pop

③ '+' or '-'

- 스택이 비어질때까지 또는 스택의 top이 '(' 일때까지 top값을 결과문자열에 추가 & pop

- 스택에 넣는다. 

④ '*' or '/'

- 스택이 비어질때까지 또는 스택의 top이 '+'이거나 '-'일때까지 결과문자열에 추가 & pop

- 스택에 넣는다.

3. 스택에 남아있는 것들을 그대로 결과문자열에 추가한다.


코드

https://www.acmicpc.net/source/12162950


결과