1918번: 후위 표기식
첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식
www.acmicpc.net
피연산자들은 바로 print, 연산자들은 우선순위 고려해 스택에 저장
)가 나오면 (가 나올때까지 연산자 프린트
- 피연산자라면 출력
- ( 라면 스택에 저장
- )라면 ( 나올때까지 연산자 출력
- 연산자라면 스택에 있는 연산자들중 우선순위가 낮은 것들 출력
- 나머지 남아있는 연산자 출력
import sys
input = sys.stdin.readline
prior = {"/": 2, "*": 2, "+": 1, "-": 1, "(": 0}
stack = []
_str = input().rstrip()
for s in _str:
if s.isalpha():
print(s, end="")
elif s == "(":
stack.append(s)
elif s == ")":
while True:
temp = stack.pop()
if temp == "(":
break
print(temp, end="")
else:
while stack and prior[stack[-1]] >= prior[s]:
print(stack.pop(), end="")
stack.append(s)
while stack:
print(stack.pop(), end="")
'개발 > 알고리즘' 카테고리의 다른 글
| [백준 9251] LCS (python) (0) | 2021.04.07 |
|---|---|
| [백준 1753] 최단경로 (python) (0) | 2021.03.30 |
| [백준 11724] 연결 요소의 개수 (python) (0) | 2021.03.19 |
| [백준 2630] 색종이 만들기 (python) (0) | 2021.03.19 |
| [백준 2606] 바이러스 (python) (0) | 2021.03.19 |




최근댓글