반응형
1918번: 후위 표기식
첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의
www.acmicpc.net
코드
inp = input()
stack = []
answer = []
for i in inp:
if i == '(':
stack.append(i)
elif i == ')':
while stack and stack[-1] != '(':
answer.append(stack.pop())
if stack[-1] == '(':
stack.pop()
elif i == '+' or i == '-':
while stack and stack[-1] != '(':
answer.append(stack.pop())
stack.append(i)
elif i == '*' or i == '/':
while stack and (stack[-1] == '*' or stack[-1] == '/'):
answer.append(stack.pop())
stack.append(i)
else:
answer.append(i)
while stack:
answer.append(stack.pop())
for i in answer:
print(i,end='')
설명
'('가 나오면 스택에 담는다.
')'가 나오면 '('를 만날 때 까지 스택에 있는 값을 pop해주고 answer 스택에 담아준다.
연산자가 나오면 자신보다 우선순위가 높거나 같으면 그 값을 pop해주고 answer 스택으로 옮겨준 뒤 스택에 담아준다.
피연산자가 나오면 바로 answer 스택에 담아준다.
반응형
'알고리즘 > 자료구조' 카테고리의 다른 글
[백준][Python] 14425번 문자열 집합 (0) | 2022.02.18 |
---|---|
[백준][Python] 11279번 최대 힙 (0) | 2022.02.17 |
[백준][Python] 5430번 AC (0) | 2022.02.16 |
[백준][Python] 18115번 카드 놓기 (0) | 2022.02.16 |
[백준][Python] 5397번 키로거 (0) | 2022.02.15 |
댓글