최대 1 분 소요

풀이

스택을 활용하여 후위 표기식을 계산하는 문제이다

문자열을 반복문으로 확인하며 숫자가 나올경우 스택에 push 하고

연산식이 나올경우 pop 하여 계산한다

코드

#1935 후위표기식
n = int(input())
s = input()
# 리스트를 만듬 이 리스트크기는 알파벳의 계수만큼 할당되며 이후 for문을이용해
# 각 알파벳은 숫자를 할당 받습니다
li = [0]*n

for i in range (n) :
    li[i] = int(input())

stack = []

for i in s:
    if "A" <= i <= "Z":
        stack.append(li[ord(i)-ord("A")]) # 1이면 li[0] 2면 li[1] 이런식 
    else :
        str2 = stack.pop() # / 연산 떄문에 str2 를 먼저 했음
        str1 = stack.pop()
        if i == "+":
            stack.append(str1+str2)
        elif i == "-":
            stack.append(str1-str2)
        elif i == "*":
            stack.append(str1*str2)
        elif i == "/":
            stack.append(str1/str2)

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

마무리

스택을 사용하여 후위표기식을 계산할수 있다는것이 신기했다

스택이론을 알고만 있었지만 실제로 이렇게 활용하니까 기분 좋았따

카테고리:

업데이트:

댓글남기기