stack단골문제. 후위표기식. 컴퓨터는 후위표기식으로 수식을 표현한다고 한다. 신기방기.
for test in range(1, int(input())+1):
equation = input().split()
flag = 0
stack = []
try:
for el in equation:
# 숫자면 stack에 밀어넣기.
if el.isdigit():
stack.append(int(el))
# 연산자면 숫자 두개꺼내서 연산.
elif el == '+':
stack.append(stack.pop() + stack.pop())
elif el == '-':
tmp = stack.pop()
stack.append(stack.pop() - tmp)
elif el == '*':
tmp = stack.pop()
stack.append(stack.pop() * tmp)
elif el == '/':
tmp = stack.pop()
stack.append(stack.pop() // tmp)
else:
answer = stack.pop()
# 점 나왔는데 stack에 숫자 남아있으면 실패.
if len(stack) != 0:
flag = 1
break
# 연산자 나왔는데 stack에 숫자 두개가 없을 떄.
except:
flag = 1
if flag:
print(f'#{test} error')
else:
print(f'#{test} {answer}')
'practivceAlgorithm > swexpertacademy' 카테고리의 다른 글
[SWEA][Python] 5110 수열 합치기 (0) | 2021.08.24 |
---|---|
[SWEA][Python] 5108 숫자추가 (0) | 2021.08.24 |
[SWEA][Python] 4875 미로 (0) | 2021.08.20 |
[SWEA][Python] 4880 토너먼트 카드 게임 (0) | 2021.08.20 |
[SWEA][Python] 4881 배열 최소 합 (0) | 2021.08.20 |