1223. [S/W 문제해결 기본] 6일차 - 계산기2

dannyp0930·2021년 8월 26일
0

SW Expert Academy

목록 보기
9/14
post-thumbnail

출처 : 링크텍스트

1. 풀이 방법

중위표기식으로 표현된 수식을 후위표기식으로 변경하여 계산하는 문제이다. stack을 활용하는 기본적인 문제이다.

2. 코드

def postfix(a):
    stack = []
    temp = []
    for e in a:
        if e == '+':
            while stack:
                temp.append(stack.pop())
            stack.append(e)
        elif e == '*':
            stack.append(e)
        else:
            temp.append(e)
    while stack:
        temp.append(stack.pop())
    return temp


def calculate(a):
    stack = []
    for e in a:
        if e == '+':
            stack.append(stack.pop() + stack.pop())
        elif e == '*':
            stack.append(stack.pop() * stack.pop())
        else:
            stack.append(int(e))
    return stack[0]


for tc in range(1, 11):
    n = int(input())
    print('#{0} {1}'.format(tc, calculate(postfix(input()))))
profile
Newbie 개발자

0개의 댓글