[백준/파이썬] 1918번 후위 표기식 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1918번 후위 표기식
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
중위 표기식(괄호 포함)을 후위 표기식으로 변환하는 문제입니다.
코드
postfix,stack,f="",[],{'+':1,'-':1,'*':2,'/':2,'(':0}
for c in list(input()):
if ord('A')<=ord(c)<=ord('Z'):postfix+=c
else:
if c==')':
while True:
t=stack.pop()
if t=='(':break
postfix+=t
elif not stack:stack.append(c)
elif c=='('or f[c]>f[stack[-1]]:stack.append(c)
else:
while True:
postfix+=stack.pop()
if not stack or f[c]>f[stack[-1]]:break
stack.append(c)
print(postfix+''.join(stack[::-1]))
설명
피연산자는 바로 출력 문자열에 붙이고, 연산자는 우선순위와 괄호 규칙에 따라 스택에서 pop/push합니다.
입력 처리 후 스택에 남은 연산자를 뒤에서부터 붙여 최종 후위 표기식을 만듭니다.
댓글남기기