[백준 1935][파이썬 1935] 후위 표기식2
풀이
스택을 활용하여 후위 표기식을 계산하는 문제이다
문자열을 반복문으로 확인하며 숫자가 나올경우 스택에 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])
마무리
스택을 사용하여 후위표기식을 계산할수 있다는것이 신기했다
스택이론을 알고만 있었지만 실제로 이렇게 활용하니까 기분 좋았따
댓글남기기