문제
https://www.acmicpc.net/problem/1918
1918번: 후위 표기식
첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식
www.acmicpc.net
풀이
처음에 if l == '+' or l=='-' 안의 와일문 조건에서
stack[-1] != '(' 대신
stack[-1] != '+' or stack[-1] != '-'
으로 조건문을 작성했다가 틀렸다.
같은 우선순위인 +-를 출력해주려다가 그 윗순위인 */를 빼먹었기 때문..
line = input()
stack = []
for l in line:
if 'A' <= l <= 'Z':
print(l, end='')
else:
if l == '(':
stack.append('(')
elif l == ')':
while stack[-1] != '(':
print(stack.pop(), end='')
stack.pop()
else:
if l == '*' or l =='/':
while stack and (stack[-1] == '/' or stack[-1] == '*'):
print(stack.pop(), end='')
if l == '+' or l == '-':
while stack and stack[-1] != '(':
print(stack.pop(), end='')
stack.append(l)
while stack:
print(stack.pop(), end='')
'알고리즘 스터디' 카테고리의 다른 글
[백준] 14888 연산자 끼워넣기 파이썬 (0) | 2021.10.29 |
---|---|
[백준] 14891 톱니바퀴 파이썬 (0) | 2021.10.03 |
[백준] 1504 특정한 최단경로 파이썬 (0) | 2021.09.30 |
[백준] 12865 평범한 배낭 파이썬 (0) | 2021.09.29 |
[백준] 13549 숨바꼭질 3 파이썬 (0) | 2021.09.28 |