https://www.acmicpc.net/problem/1918
1918번: 후위 표기식
첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의
www.acmicpc.net
1935번 후위 표기식2와 비슷하지만 더 어려웠다...
참고해서 만든 나의 코드
이번에는 stack에 연산자만 넣고 진행하게 되는데 그 생각이 쉽게 나지 않았다...
import sys
input = sys.stdin.readline().rstrip()
input = "A*(B+C)"
answer = ""
stack = [] # 연산자만 넣음
for i in input:
# (,) -> *,/ -> +-
if not i.isalpha():
# 괄호 시작
if i == "(":
stack.append(i)
# *,/
elif (i == "*") or (i == "/"):
# stack 존재 & A*B*C -> AB*C*
while stack and (stack[-1] == "*" or stack[-1] == "/"):
answer += stack.pop()
stack.append(i)
# +-
elif (i == "+") or (i == "-"):
# stack 존재 & *,/,+,- 경우 pop
while stack and stack[-1] != "(":
answer += stack.pop()
stack.append(i)
# 괄호 끝
elif i == ")":
# +-*/ pop & (도 pop
while stack and stack[-1] != "(":
answer += stack.pop()
stack.pop()
# 알파벳
else:
answer += i
while stack:
answer += stack.pop()
print(answer)
'공부 > 알고리즘' 카테고리의 다른 글
[알고리즘][백준] 10820번 문자열 분석 - 파이썬(python) 풀이 (1) | 2024.02.27 |
---|---|
[알고리즘][백준] 10808번 알파벳 개수 - 파이썬(python) 풀이 (1) | 2024.02.26 |
[알고리즘][백준] 1935번 후위 표기식2 - 파이썬(python) 풀이 (1) | 2024.02.25 |
[알고리즘][백준] 17299번 오등큰수 - 파이썬(python) 풀이 (1) | 2024.02.25 |
[알고리즘][백준] 17298번 오큰수 - 파이썬(python) 풀이 (1) | 2024.02.25 |