문제
https://www.acmicpc.net/problem/1918
풀이
처음에 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 |