๋ฐฑ์ค 1935๋ฒ
์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ ํ์ ํ๊ธฐ์์ ์ฃผ์ด์ง ์ ๋ ฅ๊ฐ์ ๋์ ํ์ฌ ๋ต์ ๋ด๋ ๋ฌธ์ ์ ๋๋ค.
import sys
n = int(input()) # ์
๋ ฅ์ผ๋ก ๋ค์ด์ค๋ ์์ ๊ฐ
s = input().strip() # ํ์ ํ๊ธฐ์์ ์
๋ ฅ์ผ๋ก ๋ฐ๋๋ค
val = []
for _ in range(n):
val.append(int(input()))
alphabet = {}
index1 = 0
for i in range(len(s)):
ascii_s = ord(s[i]) # ์์คํค ์ฝ๋๋ก ๋ณํํ์ฌ ๋๋ฌธ์์ ๊ทธ์ ํด๋นํ๋ ๊ฐ ๋์
๋๋ฆฌ์ ์ ์ฅ
if 65 <= ascii_s and ascii_s <= 90:
if s[i] not in alphabet:
alphabet[s[i]] = val[index1]
index1 += 1
val_li = []
index2 = 0
for i in range(len(s)):
if s[i] in alphabet: # ๋์ผํ ๊ฐ์ด์ฌ๋ ๋ฐฐ์ด์ ๋ฃ๋๋ค.
val_li.append(alphabet[s[i]])
else: # ์ฐ์ฐ์๊ฐ ๋ฑ์ฅํ์ ๊ฒฝ์ฐ
# ์ฐ์ฐ์ ์ด์ ์ ๋ ๊ฐ์ ๊ฐ์ ์ถ์ถํ์ฌ ๊ณ์ฐํ ๋ค์ ๋ฐฐ์ด์ ๋ฃ๋๋ค -> stack
last = val_li.pop()
first = val_li.pop()
# ์์ ์ค์ ๋๋๊ธฐ๋ ๋บ์
๊ฐ์ ๊ฒฝ์ฐ๋ ์์์ ์ํฅ์ ๋ฐ๊ธฐ์
value = 0
if s[i] == '-':
value = first - last
elif s[i] == '*':
value = first * last
elif s[i] == '/':
value = first / last
elif s[i] == '+':
value = first + last
val_li.append(value)
print('{:.2f}'.format(val_li[0]))
์ ๋ ฅ์ผ๋ก AA+A+ ๊ฐ์ด ํ๊ฐ์ง์ ๊ฐ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง ํ์ ํ๊ธฐ์์ด ๋ค์ด์ฌ ๋๊ฐ ์์ด์
if s[i] in alphabet: # ๋์ผํ ๊ฐ์ด์ฌ๋ ๋ฐฐ์ด์ ๋ฃ๋๋ค.
val_li.append(alphabet[s[i]])
๊ฐ์ ๋ถ๋ถ์ผ๋ก ์ฌ์ฉํ์ฌ ํด๊ฒฐํ์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ๋ง์ฝ A๊ฐ 1์ธ ์
๋ ฅ๊ฐ์ด๋ผ๊ณ ํ์ ๋
๋ฐฐ์ด์ ์ฒ์ ์ฐ์ฐ์๊ฐ ๋์ค๊ธฐ ์ ๊น์ง๋ [ 1, 1 ]๊ฐ ์์ต๋๋ค.
์ฐ์ฐ์ ๋์ค๊ณ ๋์ 2๊ฐ ๊ฐ์ ๊บผ๋ด ๊ณ์ฐ ํ ๋ค์ ๋ฐฐ์ด์ ๋ฃ์ด [2] ๊ฐ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ์ฐ์ฌ์๊ฐ ๋์ฌ ๋๊น์ง [2,1]์ด ๋ค์ด๊ฐ ์๊ณ ๋ค์ ์์ ๊ฐ์ ์ผ์ ๋ค์ ์งํํ์ฌ ๋ง์ง๋ง์ ๋ฐฐ์ด์[3]์ด ๋จ๊ฒ ๋ฉ๋๋ค.