ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 1918 |
문제명 | 후위 표기식 |
레벨 | 골드 4 |
분류 |
스택 |
시간복잡도 | O(n) |
인풋사이즈 | n<=100 |
사용한 언어 | Python |
제출기록 | 29088KB / 76ms |
최고기록 | 52ms |
해결날짜 | 2020/11/24 |
"""Solution code for "BOJ 1918. 후위 표기식".
- Problem link: https://www.acmicpc.net/problem/1918
- Solution link: http://www.teferi.net/ps/problems/boj/1918
"""
PRIORTY_BY_OPERATOR = {'(': -1, '+': 1, '-': 1, '*': 2, '/': 2}
def main():
infix = input()
stack = []
postfix = []
for ch in infix:
if ord('A') <= ord(ch) <= ord('Z'):
postfix.append(ch)
elif ch == ')':
while stack[-1] != '(':
postfix.append(stack.pop())
stack.pop()
elif ch == '(':
stack.append(ch)
else:
priority = PRIORTY_BY_OPERATOR[ch]
while stack and PRIORTY_BY_OPERATOR[stack[-1]] >= priority:
postfix.append(stack.pop())
stack.append(ch)
postfix.extend(reversed(stack))
print(''.join(postfix))
if __name__ == '__main__':
main()