Algorithm/Data Structure
[백준] 1935: 후위 표기식2 (python 파이썬)
코딩마루
2024. 4. 29. 17:56
해당 문제는 아래와 같은 알고리즘으로 풀이했다.
- 입력받은 수식을 문자열로 저장하고, 문자 하나씩 탐색한다.
- 피연산자의 경우 해당 피연산자에 해당하는 값으로 변환하여 리스트에 순서대로 저장한다. (값으로 변환하기 위해 values 리스트를 사용하고, 해당 값들은 stack에 담긴다.)
- 만약 연산자를 만나는 경우, stack에서 두 값을 꺼내고 해당 연산자에 해당하는 연산을 수행한다.
코드는 다음과 같다.
import sys
input = sys.stdin.readline
n = int(input())
formula = input().rstrip()
values = list()
stack = list()
for i in range(n):
values.append(int(input()))
for i in formula:
if 'A' <= i and i <= 'Z':
stack.append(values[ord(i)-ord('A')])
else:
b = stack.pop()
a = stack.pop()
if i == '+': stack.append(a+b)
elif i == '-': stack.append(a-b)
elif i == '*': stack.append(a*b)
else: stack.append(a/b)
print("{:.2f}".format(stack.pop()))