알고리즘/백준

[백준] 1935번 : 후위 표기식2

bigkwangs 2023. 10. 20. 08:40
728x90

1935번: 후위 표기식2

해당 문제는 스택자료구조를 활용 하여 문제를 해결할 수 있다.

주어진 문자열을 for 문으로 순회를 돌면서 숫자가 나오면 스택에 숫자를 저장하고, 연산자가 나온다면 숫자 2개를 pop 하여 연산한뒤 다시 저장한다. for문을 다 돌고난뒤 스택에 남아있는 하나의 숫자가 결과 값이다.

N = int(input())
number = [0 for _ in range(N)]
expression = input()

stack = []

for i in range(N):
    number[i] = int(input())
    

for char in expression:
    if char.isalpha():
        stack.append(number[ord(char) - ord('A')])
    else:
        cost = 0
        num2, num1 = stack.pop(), stack.pop()
        if char == '*':
            cost = num1 * num2
        elif char == '/':
            cost = num1 / num2
        elif char == '+':
            cost = num1 + num2
        elif char == '-':
            cost = num1 - num2

        stack.append(cost)

print("{:.2f}".format(stack[0]))
728x90