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
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 4195번 : 친구 네트워크 (0) | 2023.10.20 |
---|---|
[백준] 2042번 : 구간합구하기 (0) | 2023.10.20 |
[백준] 18428번 : 감시 피하기 (0) | 2023.10.20 |
[백준] 1405번 : 미친로봇 (0) | 2023.10.20 |
[백준] 14891번 : 톱니바퀴 (0) | 2023.10.20 |