본문 바로가기

알고리즘/백준

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

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

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 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