문제
풀이
후위 표기식을 스택을 이용하여 연산하는 문제이다.
우선 알파벳을 인식하기 위해, 파이썬의 in 연산을 사용하였으며, 인덱스 값을 통해 알파벳에 해당하는 숫자를 확인하였다.
이후 스택에 값을 넣어 가면서 연산자가 나오면 스택의 값을 빼내서 연산하는 과정을 반복하였다.
출력 시 소수 아래 2번째 자리까지 출력하기 위해 % 서식을 이용하여 문자열 포매팅을 진행하였다.
코드
N = int(input())
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
stack = []
exp = input()
data = []
for i in range(N):
data.append(int(input()))
for i in exp:
if i in alphabet:
stack.append(data[alphabet.index(i)])
else:
stack.append(float(eval(str(stack.pop(-2)) + i + str(stack.pop(-1)))))
print("%0.2f" % stack[0])
반응형
'Development > Algorithm' 카테고리의 다른 글
[boj] 2504 - 괄호의 값 (0) | 2021.03.14 |
---|---|
[boj] 10799 - 쇠막대기 (0) | 2021.03.08 |
[boj] 1874 - 스택 수열 (0) | 2021.03.08 |
[boj] 2164 - 카드2 (0) | 2021.03.08 |
[boj] 18258 - 큐2 (0) | 2021.03.04 |