Algorithm/백준

[백준 알고리즘] 1918번: 후위 표기식 (Python)

에릭 Kim 2023. 5. 18. 21:31
반응형

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

 

1918번: 후위 표기식

첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의

www.acmicpc.net

 

소스코드

 

풀이

★ 주어진 문자열을 돌면서 해당 문자가 알파벳이면 ans에 그대로 추가해주고, 연산자일 경우 else문으로 가게 됩니다.

 

★ 해당 연산자가 '('일 경우 따로 stack에서 pop할 것이 없기 때문에 stack에 추가해줍니다.

 

★ 해당 연산자가 '+' 혹은 '-'일 경우에는 우선순위가 가장 낮은 연산자이기 때문에 stack이 비어있지 않고, 괄호를 만날 때까지 stack안에 들어있는 연산자 전부를 pop하여 ans에 더해준 뒤, 자기 자신을 stack에 추가합니다.

 

★ 해당 연산자가 '*' 혹은 '/'일 경우에는 stack이 비어있지 않고, stack 안에 자기 자신보다 연산자 우선순위가 낮은 연산자를 만날 때까지 stack을 pop 해준뒤, 자기 자신을 append 해줍니다.

 

★ 해당 연산자가 ')'일 경우엔 괄호 안에 있는 연산자 전부를 pop 해준 뒤, 괄호를 시작하는 연산자인 '(' 연산자까지 pop 해줍니다.

 

★ 마지막으로 stack이 비어있지 않다면 stack 안에 남은 연산자들을 pop하여 추가해줍니다 !

반응형