Algoritm/BOJ

[BOJ] 1935번 : 후위 표기식2

twoDeveloper 2021. 9. 16. 02:05

■ 문제 풀이

· 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