728x90
반응형
문제요약 (1918. 후위표기식)
풀이를 위한 부연 설명
- 연산자의 우선순위를 기준으로 스택에 쌓아야한다.
- 괄호 처리에 유의해야한다.
- 스택에 대한 자세한 개념 설명과 연관 문제는 다음 링크를 참고하면 된다.
코드
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)
기억할 점
- 괄호 없는 후위 표기식은 만들기 쉬웠는데 이후가 어려웠다
반응형
'코딩 테스트 > 파이썬 문제 풀이' 카테고리의 다른 글
[백준] 1654번 파이썬 - 이분탐색 (0) | 2024.02.27 |
---|---|
[백준] 2800번 파이썬 - 스택, 조합 (0) | 2024.02.26 |
[백준] 16113번 파이썬 - 문자열, 구현 (1) | 2024.01.25 |
[백준] 1931번 파이썬 - 그리디 (0) | 2024.01.19 |
[백준] 11286번 파이썬 - 우선순위 큐 (0) | 2024.01.19 |