Algorithm/백준

[백준/Python] 후위 표기식2

poppy 2021. 10. 7. 11:15
반응형

https://www.acmicpc.net/problem/1935

 

1935번: 후위 표기식2

첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이

www.acmicpc.net

n = int(input())
postfix = input()
nums = [int(input()) for _ in range(n)]

stack = []
# 후위 표기식 계산
for p in postfix:
	if 'A' <= p <= 'Z': # 피연산자인 경우
		stack.append(nums[ord(p) - ord('A')])
	else: # 연산자인 경우
		b = stack.pop()
		a = stack.pop()

		if p == '+': 
			stack.append(a + b)
		elif p == '-':
			stack.append(a - b)
		elif p == '*':
			stack.append(a * b)
		elif p == '/':
			stack.append(a / b)

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

이 문제는 스택을 사용하는 문제이다.

1. 필요한 정보를 입력받고 스택을 생성한다.

2. 후위 표기식을 계산한다.

    2-1. 피연산자인 경우 스택에 값을 삽입한다.

    2-2. 연산자인 경우 스택에서 값을 가져와 계산한 후 그 값을 스택에 삽입한다.

3. 결과값을 소수점 둘째자리까지 출력한다.

반응형

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

[백준/Python] 카드  (0) 2021.10.13
[백준/Python] 요세푸스 문제 0  (0) 2021.10.10
[백준/Python] 괄호  (0) 2021.10.06
[백준/Python] 듣보잡  (0) 2021.10.06
[백준/Python] 숨바꼭질 6  (0) 2021.10.05