본문 바로가기

코팅테스트 연습

[Python] SWEA 4874. Forth

열심히 풀었는데 테스트 케이스 5개를 만족하지 못한다. 한참 들여다 봐도 답이 나오지 않아 기록해두기 위해 적어둔다.

T = int(input())
for test_case in range(1, T + 1):
    stack = []
    Input = list(input().split())
    for i in Input:
        if i.isdigit():
            stack.append(int(i))
        elif i == '.':
            if len(stack)==1:
                ans = stack.pop()
            else:
                ans = 'error'
            break
        else:
            if len(stack)<2:
                ans = 'error'
                break
            else:
                if i == '+':
                    stack.append(stack.pop()+stack.pop())
                elif i == '-':
                    stack.append(stack.pop()-stack.pop())
                elif i == '*':
                    stack.append(stack.pop()*stack.pop())
                elif i == '/':
                    stack.append(stack.pop()/stack.pop())

    print(f"#{test_case} {ans}")

 

나눗셈 디버깅을 해서야 답을 찾았다;; 순서가 잘못되었었다...ㅜㅜ 진짜 화가나지만 해결했으니 됐다..

T = int(input())
for test_case in range(1, T + 1):
    stack = []
    Input = list(input().split())
    for i in Input:
        if i.isdigit():
            stack.append(int(i))
        elif i == '.':
            if len(stack)==1:
                ans = stack.pop()
            else:
                ans = 'error'
            break
        else:
            if len(stack)<2:
                ans = 'error'
                break
            else:
                num2 = stack.pop()
                num1 = stack.pop()
                if i == '+':
                    stack.append(num1+num2)
                elif i == '-':
                    stack.append(num1-num2)
                elif i == '*':
                    stack.append(num1*num2)
                elif i == '/':
                    stack.append(num1//num2)

    print(f"#{test_case} {ans}")