[SWEA] Forth
Date:
[SWEA] Forth
Problem URL : Forth
TC = int(input())
for tc in range(1, TC + 1):
exp = list(input().split())
stack = []
error = False
for i in range(len(exp)):
if exp[i].isdigit():
stack.append(exp[i])
else:
if exp[i] == '.':
if len(stack) != 1: # [1]
error = True
break
if len(stack) < 2: # [2]
error = True
break
b = int(stack.pop())
a = int(stack.pop())
if exp[i] == '+':
stack.append(a + b)
elif exp[i] == '-':
stack.append(a - b)
elif exp[i] == '*':
stack.append(a * b)
elif exp[i] == '/':
stack.append(a // b) # [3]
if error:
print('#{} error'.format(tc))
else:
print('#{} {}'.format(tc, stack[-1]))
Comments
[1] ‘.’을 만났을 때 stack에 숫자가 1개 넘게 있으면 error
[2] 연산자 계산을 해야하는데 stack에 숫자가 2개도 없으면 error
[3] a/b 로 해주면 실수값으로 계산이 진행되어서 fail이 뜬다.
댓글