solution
1. 스택 이용 → 연산자면 pop() 두 번
2. print('%.2f' % n) : 소수 둘째 자리까지 출력
# 1395, 후위 표기식 2
import sys
from collections import deque
n = int(sys.stdin.readline())
ex = deque()
ex.extend(list(sys.stdin.readline().rstrip()))
num = []
for _ in range(n):
num.append(int(sys.stdin.readline()))
tmp = []
res = 0
while ex:
x = ex.popleft()
if x == '+' or x == '-' or x == '*' or x == '/':
a = tmp.pop()
b = tmp.pop()
if str(a).isalpha():
a = num[ord(a)-ord('A')]
if str(b).isalpha():
b = num[ord(b)-ord('A')]
if x == '+':
res = b + a
elif x == '-':
res = b - a
elif x == '*':
res = b * a
else:
res = b / a
tmp.append(res)
else:
tmp.append(x)
print('%.2f' % res)
31928KB
80ms
deque 사용 X
# 1395, 후위 표기식 2
import sys
n = int(sys.stdin.readline())
ex = sys.stdin.readline().rstrip()
num = []
for _ in range(n):
num.append(int(sys.stdin.readline()))
tmp = []
res = 0
for x in ex:
if 'A' <= x <= 'Z':
tmp.append(num[ord(x)-ord('A')])
else:
a = tmp.pop()
b = tmp.pop()
if x == '+':
res = b + a
elif x == '-':
res = b - a
elif x == '*':
res = b * a
else:
res = b / a
tmp.append(res)
print('%.2f' % res)
29380KB
60ms
문제 출처 https://www.acmicpc.net/problem/1935
'알고리즘 > 스택' 카테고리의 다른 글
자바 | 백준 | 1874 | 스택 수열 | intValue() (0) | 2021.02.11 |
---|