■ 문제 풀이
· isalpha() => 문자인지 확인하는 내장 함수 (문자열에 숫자 및 공백이 포함되어 있으면 False 반환)
· ord() => 문자의 유니코드 값을 반환
■ 문제 해답
import sys
input = sys.stdin.readline
n = int(input())
s = list(input().rstrip())
alpha = [0] * n
for i in range(n):
alpha[i] = int(input()) # 피연산자 대응 값
stack = []
for i in s:
if i.isalpha():
stack.append(alpha[ord(i) - ord('A')])
else:
num2 = stack.pop()
num1 = stack.pop()
if i == '+':
stack.append(num1 + num2)
elif i == '-':
stack.append(num1 - num2)
elif i == '*':
stack.append(num1 * num2)
elif i == '/':
stack.append(num1 / num2)
print(format(stack[0], ".2f"))
문제출처 : https://www.acmicpc.net/problem/1935
1935번: 후위 표기식2
첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이
www.acmicpc.net
'Algoritm > BOJ' 카테고리의 다른 글
[BOJ] 1260번: DFS와 BFS (0) | 2022.04.14 |
---|---|
[BOJ] 13023번: ABCDE (0) | 2022.04.14 |
[BOJ] 10799번 : 쇠막대기 (0) | 2021.09.14 |
[BOJ] 1158번 : 요세푸스 문제 (0) | 2021.09.12 |
[BOJ] 10845 : 큐 (0) | 2021.09.11 |