[๋ฐฑ์ค 1935 ๐ฅ] ํ์ ํ๊ธฐ์2
๋ฌธ์
ํ์ ํ๊ธฐ์๊ณผ ๊ฐ ํผ์ฐ์ฐ์์ ๋์ํ๋ ๊ฐ๋ค์ด ์ฃผ์ด์ ธ ์์ ๋, ๊ทธ ์์ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํผ์ฐ์ฐ์์ ๊ฐ์(1 ≤ N ≤ 26) ๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋์งธ ์ค์๋ ํ์ ํ๊ธฐ์์ด ์ฃผ์ด์ง๋ค. (์ฌ๊ธฐ์ ํผ์ฐ์ฐ์๋ A~Z์ ์๋๋ฌธ์์ด๋ฉฐ, A๋ถํฐ ์์๋๋ก N๊ฐ์ ์๋๋ฌธ์๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ๊ธธ์ด๋ 100์ ๋์ง ์๋๋ค) ๊ทธ๋ฆฌ๊ณ ์ ์งธ ์ค๋ถํฐ N+2๋ฒ์งธ ์ค๊น์ง๋ ๊ฐ ํผ์ฐ์ฐ์์ ๋์ํ๋ ๊ฐ์ด ์ฃผ์ด์ง๋ค. 3๋ฒ์งธ ์ค์๋ A์ ํด๋นํ๋ ๊ฐ, 4๋ฒ์งธ ์ค์๋ B์ ํด๋นํ๋๊ฐ , 5๋ฒ์งธ ์ค์๋ C ...์ด ์ฃผ์ด์ง๋ค, ๊ทธ๋ฆฌ๊ณ ํผ์ฐ์ฐ์์ ๋์ ํ๋ ๊ฐ์ 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
ํ์ ํ๊ธฐ์์ ์์์๋ถํฐ ๊ณ์ฐํ์ ๋, ์์ ๊ฒฐ๊ณผ์ ์ค๊ฐ ๊ฒฐ๊ณผ๊ฐ -20์ต๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 20์ต๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ๋ ฅ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์์ซ์ ๋์งธ ์๋ฆฌ๊น์ง ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
import sys
n=int(sys.stdin.readline())
calculate=list(sys.stdin.readline().strip())
numbers=[int(sys.stdin.readline()) for _ in range(n)]
stack=[]
idx=0
for cal in calculate:
if cal=='+':
a=stack.pop()
b=stack.pop()
stack.append(b+a)
elif cal=='-':
a = stack.pop()
b = stack.pop()
stack.append(b-a)
elif cal=='/':
a = stack.pop()
b = stack.pop()
stack.append(b/a)
elif cal=='*':
a = stack.pop()
b = stack.pop()
stack.append(b*a)
else:
stack.append(numbers[ord(cal)-65])
print('{:.2f}'.format(stack[-1]))
๊ฐ๋จํ ์คํ ๋ฌธ์ ์๋ค!
ํ์ ํ๊ธฐ์์ ๊ณ์ฐํ๋ ๋ฐฉ์๋๋ก ํผ์ฐ์ฐ์์ธ ์ซ์๊ฐ ๋์ค๋ฉด ์คํ์ ๋ฃ์ด์ฃผ๊ณ , ์ฐ์ฐ์๊ฐ ๋์ค๋ฉด ์คํ์์ 2๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ popํด์ ๊ณ์ฐํด์ค ๊ฐ์ ๋ค์ ์คํ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
ABC*+DE/-
1
2
3
4
5
์ด๋ฐ ์์ผ๋ก 1->A, 2->B, 3->C, 4->D, 5->E์ผ๋ก ๋ฌธ์์๊ณผ ์ ๋ ฅ๋ ์ซ์๋ฅผ ๋งคํํด์คฌ์ด์ผ ํ๋๋ฐ, ์ซ์๋ค์ ๋ฐฐ์ด์ ๋ฃ์ด๋๊ณ ์์คํค์ฝ๋๋ฅผ ์ด์ฉํด์ ํด๋น ๋ฌธ์์ ์ธ๋ฑ์ค๋ฅผ ๊ณ์ฐํด์คฌ๋ค.
์์คํค์ฝ๋๋ฅผ ์๋ ค์ฃผ๋ ํจ์์ธ ord๋ฅผ ์ด์ฉํ๊ณ , ord('A')๊ฐ 65์ธ ๊ฒ์ ์ด์ฉํด์ ord(๋ฌธ์)-65 ํ์์ผ๋ก ๋ฐฐ์ด์์ ๋ช ๋ฒ์งธ ์ซ์์ธ์ง ์์๋๋ค.
๋, ์์์ 2๋ฒ์งธ ์๋ฆฌ๊น์ง๋ง ์ถ๋ ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฒ์์ round ํจ์๋ฅผ ์ด์ฉํ์ง๋ง, 3์ด๋ 2.5์ ๊ฐ์ด ์์์ 2์๋ฆฌ๊น์ง ํ์์๋ ์๋ค์ 3, 2.5 ๊ทธ๋๋ก ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์ '{:.2f}'.format() ํจ์๋ฅผ ์ด์ฉํด์ ์์์ 2๋ฒ์งธ ์๋ฆฌ๊น์ง ์ถ๋ ฅํ๋ ํ์์ผ๋ก ๋ณ๊ฒฝํ๋ค.