ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
ํ์ ํ๊ธฐ์์ ๊ณ์ฐํ๋ ๊ฒ์ ํ์ ํ๊ธฐ์์ ๋ง๋๋ ๊ฒ๋ณด๋ค๋ ๊ฐ๋จํ๋ค. ํผ์ฐ์ฐ์๋ฅผ stack์ push ํ๊ณ , ์ฐ์ฐ์๊ฐ ์ ๋ ฅ๋๋ฉด stack์ ๊ฐ ์ค 2๊ฐ๋ฅผ ์ถ๋ ฅํ์ฌ ์ฐ์ฐ์ ํ๋ฉด ๋๋ค. ํด๋น ๋ฌธ์ ์์๋ A - Z์ ๊ฐ์ด ์์ด ๋๋ฌธ์๊ฐ ์ฃผ์ด์ง๊ณ , ์ด์ ๋งค์นญ ๋๋ ์ซ์๋ค์ด ์ ๋ ฅ๋ ๋ ํ์ ํ๊ธฐ์์ ๊ณ์ฐํ๋ ๋ฌธ์ ์ด๋ค.
- `string.ascii_uppercase`๋ฅผ ํ์ฉํ์ฌ A - Z์ ๋์๋๋ ๋์
๋๋ฆฌ๋ฅผ ์ด๊ธฐํ ํ๋ค.
- `stirng.ascii_uppercase`๋ ์ฌ์ ์ ์ ์๋ string ์์๋ก ABCDEFGHIJKLMNOPQRSTUVWXYZ๋ฅผ ์๋ฏธํ๋ค.
- ์ ๋ ฅ๋ ๊ฐ์ด ์ํ๋ฒณ์ธ ๊ฒฝ์ฐ stack์ pushํ๊ณ ์ฐ์ฐ์๊ฐ ์ ๋ ฅ๋ ๊ฒฝ์ฐ ๊ณ์ฐ์ ์ํํ์ฌ ๋ค์ stack์ ์ถ๊ฐํ๋ค.
์ฝ๋
from sys import stdin
import string
if __name__ == "__main__":
change = dict()
stack = []
num_operand = int(stdin.readline())
math_expr = stdin.readline()[:-1]
# ์ํ๋ฒณ๊ณผ ๋งค์นญ๋๋ ์ซ์๋ฅผ ์ฐพ๊ธฐ ์ํด ๋์
๋๋ฆฌ ์์ฑ
for alpha in string.ascii_uppercase[:num_operand]:
change[alpha] = int(stdin.readline())
for c in math_expr:
if c.isalpha():
stack.append(change[c])
else:
n2, n1 = stack.pop(), stack.pop()
if c == '*':
stack.append(n1 * n2)
elif c == '/':
stack.append(n1 / n2)
elif c == '+':
stack.append(n1 + n2)
else:
stack.append(n1 - n2)
print("%.2f" % stack[-1])
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 6588 ๊ณจ๋๋ฐํ์ ์ถ์ธก (0) | 2020.06.25 |
---|---|
๋ฐฑ์ค: 11655 ROT13 (0) | 2020.06.24 |
๋ฐฑ์ค: 1918 ํ์ ํ๊ธฐ์ (0) | 2020.06.24 |
๋ฐฑ์ค: 10799 ์ ๋ง๋๊ธฐ (0) | 2020.06.23 |
๋ฐฑ์ค: 17413 ๋จ์ด ๋ค์ง๊ธฐ 2 (0) | 2020.06.23 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ