๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1935)
<ํ์ ํ๊ธฐ์ 2>
๋ฌธ์
ํ์ ํ๊ธฐ์๊ณผ ๊ฐ ํผ์ฐ์ฐ์์ ๋์ํ๋ ๊ฐ๋ค์ด ์ฃผ์ด์ ธ ์์ ๋, ๊ทธ ์์ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํผ์ฐ์ฐ์์ ๊ฐ์(1 ≤ N ≤ 26)๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋์งธ ์ค์๋ ํ์ ํ๊ธฐ์์ด ์ฃผ์ด์ง๋ค.
(์ฌ๊ธฐ์ ํผ์ฐ์ฐ์๋ A~Z์ ์๋๋ฌธ์์ด๋ฉฐ, A๋ถํฐ ์์๋๋ก N๊ฐ์ ์๋๋ฌธ์๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ๊ธธ์ด๋ 100์ ๋์ง ์๋๋ค) ๊ทธ๋ฆฌ๊ณ ์ ์งธ ์ค๋ถํฐ N+2๋ฒ์งธ ์ค๊น์ง๋ ๊ฐ ํผ์ฐ์ฐ์์ ๋์ํ๋ ๊ฐ์ด ์ฃผ์ด์ง๋ค.
3๋ฒ์งธ ์ค์๋ A์ ํด๋นํ๋ ๊ฐ, 4๋ฒ์งธ ์ค์๋ B์ ํด๋นํ๋ ๊ฐ , 5๋ฒ์งธ ์ค์๋ C... ์ด ์ฃผ์ด์ง๋ค,
๊ทธ๋ฆฌ๊ณ ํผ์ฐ์ฐ์์ ๋์ํ๋ ๊ฐ์ 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
ํ์ ํ๊ธฐ์์ ์์์๋ถํฐ ๊ณ์ฐํ์ ๋, ์์ ๊ฒฐ๊ณผ์ ์ค๊ฐ ๊ฒฐ๊ณผ๊ฐ -20์ต๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 20์ต๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์
์ ๋ ฅ๋ง ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์์ซ์ ๋์งธ ์๋ฆฌ๊น์ง ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- my solution
import sys
if __name__=='__main__':
n=int(sys.stdin.readline().strip()) # ํผ์ฐ์ฐ์์ ๊ฐ์
line=sys.stdin.readline().strip() # ํ์ ํ๊ธฐ์
num=[] # ํผ์ฐ์ฐ์ ๋์ํ๋ ๊ฐ ๋ฃ์ ๋ฐฐ์ด
dict = {'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8,'J': 9,
'K': 10, 'L': 11, 'M': 12,'N': 13, 'O': 14, 'P': 15, 'Q': 16,
'R': 17, 'S': 18, 'T': 19, 'U': 20, 'V': 21, 'W': 22, 'X': 23, 'Y': 24,
'Z': 25} # ํผ์ฐ์ฐ์_index match
for i in range(n): # ํผ์ฐ์ฐ์ ๋์ํ๋ ๊ฐ
num.append(int(sys.stdin.readline().strip()))
arr=[] # ์์
for i in line:
if i.isalpha(): # ์๋๋ฌธ์๋ฉด ์ซ์๋ก ๋ฐ๊ฟ ๋ฃ์
arr.append(num[dict[i]])
else: # ์ฐ์ฐ์
b=arr.pop()
a=arr.pop()
if i=='+': # ๋ํ๊ธฐ
arr.append(a+b)
elif i=='-': # ๋นผ๊ธฐ
arr.append(a-b)
elif i=='*': # ๊ณฑํ๊ธฐ
arr.append(a*b)
elif i=='/': # ๋๋๊ธฐ
arr.append(a/b)
print("{:.2f}".format(arr[-1])) # ์์ซ์ ๋์งธ ์๋ฆฌ๊น์ง ์ถ๋ ฅ
์๋๋ฌธ์๋ก ์ฃผ์ด์ง๋ ํผ์ฐ์ฐ์์ ํผ์ฐ์ฐ์์ ๋์ํ๋ ๊ฐ์ matching๋ง ์ ์์ผ์ค๋ค๋ฉด ์ด๋ ค์ธ ๊ฒ์ด ์์ด ๋ณด์ด๋ ๋ฌธ์ ์ด๋ค.
- A~Z๋ฅผ dict๋ฅผ ํ์ฉํ์ฌ ์ซ์์ key, value๋ก ์ ์ธํ์๋ค. ์ฌ๊ธฐ์ ์ซ์๋ num ๋ฐฐ์ด์ index๋ก ํ์ฉ๋ ๊ฒ์ด๋ค. ํผ์ฐ์ฐ์ ๋์ํ๋ ๊ฐ์ด A๋ถํฐ ์์๋๋ก ๋ค์ด์ค๋ฏ๋ก num์ ์ ์ฅํด๋๋ฉด, dict์ key์ ํด๋นํ๋ value๋ฅผ ํตํด์ ๋์ค์ ๊ฐ์ ์ฐพ์ ์ ์๋ค.
1) ํผ์ฐ์ฐ์์ ๊ฐ์, ํ์ ํ๊ธฐ์, ํผ์ฐ์ฐ์ ๋์ํ๋ ๊ฐ ์ ๋ ฅ
2) stack์ ํ์ฉํ๊ธฐ ์ํด arr ์ ์ธ
2-1) ์๋๋ฌธ์์ด๋ฉด ์ซ์๋ก ๋ฐ๊ฟ ๋ฃ์
2-2) ์ฐ์ฐ์์ด๋ฉด pop์ ํ์ฉํ์ฌ arr์์ 2๊ฐ์ ๊ฐ์ ๊บผ๋ธ ํ ์ฐ์ฐ
-> ๋์ค์ ๋ค์ด๊ฐ ๊ฒ์ด ๋จผ์ pop ๋๋ฏ๋ก ๋จผ์ ๋์จ ๊ฒ์ b๋ผ ํจ
3) format์ ํ์ฉํ์ฌ ์์ซ์ ๋์งธ ์๋ฆฌ๊น์ง ์ถ๋ ฅ
์๊ฐ๐ค
ํผ์ฐ์ฐ์ A~Z์ ํผ์ฐ์ฐ์์ ๋์ํ๋ ๊ฐ์ matching ์ํค๋ ๊ฒ๊ณผ ํ์ ์ฐ์ฐ์ ๊ฐ๋ ์
์ดํดํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 11399_ATM (0) | 2021.10.20 |
---|---|
[Baekjoon] 1662_์์ถ (0) | 2021.10.10 |
[Baekjoon] 20920_์๋จ์ด ์๊ธฐ๋ ๊ดด๋ก์ (0) | 2021.10.07 |
[Baekjoon] 16922_๋ก๋ง ์ซ์ ๋ง๋ค๊ธฐ (0) | 2021.10.06 |
[Baekjoon] 1874_์คํ ์์ด (0) | 2021.10.01 |