알고리즘/백준
[백준] 1935번 : 후위 표기식2
bigkwangs
2023. 10. 20. 08:40
728x90
해당 문제는 스택자료구조를 활용 하여 문제를 해결할 수 있다.
주어진 문자열을 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