s = input()
stack = []
res = ""
for i in s:
if i.isalpha():
res += i
else: #연산자인 경우
if i == "(":
stack.append(i)
elif i == "+" or i == "-":
while stack and stack[-1] != "(":
res += stack.pop()
stack.append(i)
elif i == "*" or i == "/":
while stack and (stack[-1] =="*" or stack[-1] == "/"):
res += stack.pop()
stack.append(i)
elif i == ")":
while stack and stack[-1] != "(":
res += stack.pop()
stack.pop() #잔여 (여는 괄호 제거를 해주어야 한다.
while stack:
res += stack.pop()
print(res)
https://yeomylaoo.tistory.com/775
해당 문제에 관해서 풀이가 자세히 있습니다 다른점은 표현식이 숫자냐 문자냐에 차이로 isdecimal을 사용해 풀었는지 isalpha를 사용해 풀었는지의 차이입니다. :->
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][파이썬] - 13417. 카드 문자열(파이썬/python) (0) | 2022.07.18 |
---|---|
[백준][스택] - 1935. 후위 표기식2(파이썬) (0) | 2022.07.17 |
[백준][스택] - 10799. 쇠막대기(파이썬) (0) | 2022.07.17 |
[백준][스택] - 2493. 탑 (0) | 2022.07.15 |
[백준][이분 탐색] - 10815. 숫자 카드 (0) | 2022.07.08 |