[백준 1918번 ] 후위 표기식 (stack, python)
728x90
반응형
import sys
from math import sqrt
input=sys.stdin.readline
d={'*':2,'/':2,'+':1,'-':1,'(':0,')':0}
q=[]
s=input().strip()
for x in s:
# 알파벳 출력
if x not in d:
print(x,end='')
#왼쪽 괄호
elif x=='(':
q.append(x)
# 오른쪽 괄호시 왼쪽 괄호 나올때까지 중간 연산자 출력한다
elif x==')':
while q:
cur=q.pop()
if cur=='(': break
print(cur,end='')
else:
# 우선순위가 더 낮다면 이전에 우선순위 높은 연산자를 출력한다
while q and q[-1]!='(' and d[x]<=d[q[-1]]:
print(q.pop(),end='')
q.append(x)
# 나머지 연산자를 출력한다
while q:
print(q.pop(),end='')
728x90
반응형
'백준' 카테고리의 다른 글
[백준 2343번] 기타 레슨 (이분탐색, python, binary search) (0) | 2020.11.26 |
---|---|
[백준 2206번] 벽 부수고 이동하기 (python, bfs) (0) | 2020.11.26 |
[백준 15711번] 환상의 짝꿍 (python, 소수, 에라토스테네스의 체, 골드바흐의 추측) (0) | 2020.11.25 |
[백준 11279번 ] 최대 힙 (python, heapq) (0) | 2020.11.25 |
[백준 문제집 모음] 가장 긴 증가하는 부분수열 (0) | 2020.11.25 |
TAGS.