다라다라V
article thumbnail
728x90
반응형

문제요약 (1918. 후위표기식)

 

 

1918번: 후위 표기식

첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의

www.acmicpc.net

 

 

풀이를 위한 부연 설명

  • 연산자의 우선순위를 기준으로 스택에 쌓아야한다.
  • 괄호 처리에 유의해야한다.

 

  • 스택에 대한 자세한 개념 설명과 연관 문제는 다음 링크를 참고하면 된다.
 

[구버전] [Python] 03. 스택과 큐

📌 스택이란? 📚 스택 알아보기 📃 스택 (stack) 데이터를 임시 저장할 때 사용하는 자료구조 데이터의 입력과 출력 순서는 후입선출(LIFO) 방식 푸시(push) : 스택에 데이터를 넣는 작업 팝(pop) : 스

daradarav.tistory.com

 

 

코드 

import sys
input = sys.stdin.readline

exp = input().rstrip()

stack = []
ans = ""
idx = 0

while idx < len(exp):
    e = exp[idx]
    if e == "(":
        stack.append(e)
    elif e == ")":
        while stack and stack[-1] != "(":
            ans += stack.pop()
        stack.pop()
    elif e == "*" or e == "/":
        while stack:
            if stack[-1] == "*" or stack[-1] == "/":
                ans += stack.pop()
            else:
                break
        stack.append(e)
    elif e == "+" or e == "-":
        while stack and stack[-1] != "(":
            ans += stack.pop()
        stack.append(e)
    else:
        ans += e
    idx += 1

while stack:
    ans += stack.pop()

print(ans)

 

 

 

기억할 점

  • 괄호 없는 후위 표기식은 만들기 쉬웠는데 이후가 어려웠다
반응형
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!