알고리즘

백준 파이썬 1935번 후위표기식2

chaewonni 2023. 5. 18. 00:52

 

n=int(input())

sik=input()
list=[]
stack=[]

for i in range(n):
    list.append(int(input()))

for i in sik:
    if 'A' <= i <= 'Z': #피연산자 만나면
        stack.append(list[ord(i)-ord('A')])
    else: #연산자 만나면
        a=stack.pop()
        b=stack.pop()
        if i == '+':
            stack.append(b+a)
        elif i == '-':
            stack.append(b-a)
        elif i == '*':
            stack.append(b*a)
        elif i == '/':
            stack.append(b/a)

print('%.2f' %stack[0])

stack을 이용해서 풀어주었다. 피연산자를 만나면 알파벳을 아스키코드 숫자로  바꿔주는 ord함수를 이용해서 스택에 넣어주고, 연산자를 만나면  스택에서 pop으로 꺼내주는 식으로 코드를 작성하였다. 마지막에는 소수점 둘째자리까지 출력될 수 있도록 하였다.