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

거북이·2023년 9월 25일
0

백준[실버3]

목록 보기
90/92
post-thumbnail

💡문제접근

  • 후위 표기식을 구현하는 방법은 다음과 같다.
  1. 피연산자(숫자)이면 스택에 저장한다.
  2. 연산자(기호)면 필요한 수만큼의 피연산자(숫자)를 스택에서 꺼내 연산을 실행하고 연산 결과를 다시 스택에 저장한다.

💡코드(메모리 : 31256KB, 시간 : 40ms)

import sys
input = sys.stdin.readline

N = int(input())
formula = input().strip()	# 표기식
alphabet = {}				# 알파벳 딕셔너리
for i in range(65, 65+N):
    num = int(input())
    alphabet[chr(i)] = num

# 후위 표기 수식의 계산 구현 방법
# 1. 피연산자(숫자)이면 스택에 저장
# 2. 연산자(연산기호)면 필요한 수만큼의 피연산자(2개)를 스택에서 꺼내 연산을 실행하고 연산 결과를 다시 스택에 저장
stack = []
for i in formula:
	# 피연산자인 경우 → 스택에 저장
    if i.isalpha():
        stack.append(alphabet[i])
    # 연산자인 경우
    else:
    	# 스택에서 두 개의 숫자를 pop
        first = stack.pop()
        second = stack.pop()
        if i == "*":
            val = second * first
            stack.append(val)
        elif i == "/":
            val = second / first
            stack.append(val)
        elif i == "+":
            val = second + first
            stack.append(val)
        elif i == "-":
            val = second - first
            stack.append(val)
# 문제에서 요구한 출력형식 → 소숫점 둘째 자리까지 출력
print('%.2f' % sum(stack))

💡소요시간 : 11m

0개의 댓글