1935. ํ›„์œ„ ํ‘œ๊ธฐ์‹2 (silver 3)

# ์ž๋ฃŒ๊ตฌ์กฐ

ํ›„์œ„ ํ‘œ๊ธฐ์‹๊ณผ ๊ฐ ํ”ผ์—ฐ์‚ฐ์ž์— ๋Œ€์‘ํ•˜๋Š” ๊ฐ’๋“ค์ด ์ฃผ์–ด์ ธ ์žˆ์„ ๋•Œ, ๊ทธ ์‹์„ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜(1 ≤ N ≤ 26) ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘˜์งธ ์ค„์—๋Š” ํ›„์œ„ ํ‘œ๊ธฐ์‹์ด ์ฃผ์–ด์ง„๋‹ค. (์—ฌ๊ธฐ์„œ ํ”ผ์—ฐ์‚ฐ์ž๋Š” A~Z์˜ ์˜๋Œ€๋ฌธ์ž์ด๋ฉฐ, A๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ N๊ฐœ์˜ ์˜๋Œ€๋ฌธ์ž๋งŒ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ธธ์ด๋Š” 100์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค) ๊ทธ๋ฆฌ๊ณ  ์…‹์งธ ์ค„๋ถ€ํ„ฐ N+2๋ฒˆ์งธ ์ค„๊นŒ์ง€๋Š” ๊ฐ ํ”ผ์—ฐ์‚ฐ์ž์— ๋Œ€์‘ํ•˜๋Š” ๊ฐ’์ด ์ฃผ์–ด์ง„๋‹ค. 3๋ฒˆ์งธ ์ค„์—๋Š” A์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’, 4๋ฒˆ์งธ ์ค„์—๋Š” B์— ํ•ด๋‹นํ•˜๋Š”๊ฐ’ , 5๋ฒˆ์งธ ์ค„์—๋Š” C ...์ด ์ฃผ์–ด์ง„๋‹ค, ๊ทธ๋ฆฌ๊ณ  ํ”ผ์—ฐ์‚ฐ์ž์— ๋Œ€์‘ ํ•˜๋Š” ๊ฐ’์€ 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

ํ›„์œ„ ํ‘œ๊ธฐ์‹์„ ์•ž์—์„œ๋ถ€ํ„ฐ ๊ณ„์‚ฐํ–ˆ์„ ๋•Œ, ์‹์˜ ๊ฒฐ๊ณผ์™€ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๊ฐ€ -20์–ต๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 20์–ต๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž…๋ ฅ๋งŒ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์†Œ์ˆซ์  ๋‘˜์งธ ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

์˜ˆ์ œ ์ž…๋ ฅ1

5
ABC*+DE/-
1
2
3
4
5

์˜ˆ์ œ ์ถœ๋ ฅ1

6.20

 

์˜ˆ์ œ ์ž…๋ ฅ2

1
AA+A+
1

์˜ˆ์ œ ์ถœ๋ ฅ2

3.00

 

 

 

ํ’€์ด)

๋จผ์ € ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜ n์„ ์ž…๋ ฅํ•˜๊ณ , ๊ทธ ๋‹ค์Œ word์— ํ›„์œ„ํ‘œ๊ธฐ์‹์„ ์ž…๋ ฅํ•œ๋‹ค.

n๊ฐœ๋งŒํผ ๋ฐฐ์—ด์— ์ €์žฅํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ num๋ฐฐ์—ด์— 0์„ n๊ฐœ๋งŒํผ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ์—ˆ๋‹ค.

for๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜ n๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค์„œ num๋ฐฐ์—ด์— ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ €์žฅํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ ๋‹ค์Œ ํ›„์œ„ํ‘œ๊ธฐ์‹์„ ๊ณ„์‚ฐํ•  stack ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์ฃผ์—ˆ๋‹ค.

ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ €์žฅํ•œ ๋ฐฐ์—ด์„ for๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์›์†Œ๊ฐ’์„ ๊ฒ€์‚ฌํ•ด์ฃผ์—ˆ๋Š”๋ฐ, if๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋งŒ์•ฝ ์›์†Œ๊ฐ’์ด ์•ŒํŒŒ๋ฒณ์ด๋ฉด ํ”ผ์—ฐ์‚ฐ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— stack์— ํ”ผ์—ฐ์‚ฐ์ž ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด์ฃผ์—ˆ๋‹ค.

else๋ฌธ์—์„œ๋Š” ์—ฐ์‚ฐ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”ผ์—ฐ์‚ฐ์ž ๋‘ ๊ฐœ๋ฅผ ๊บผ๋‚ด์„œ ์‚ฌ์น™์—ฐ์‚ฐ์„ ๊ณ„์‚ฐํ•ด์ฃผ์—ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ %.2f ํฌ๋งทํ˜•์‹์„ ์‚ฌ์šฉํ•ด์„œ ์—ฐ์‚ฐ๊ฒฐ๊ณผ์— ํ•ด๋‹นํ•˜๋Š” 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ์†Œ์ˆ˜์  ๋‘˜์งธ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•ด์ฃผ์—ˆ๋‹ค.

n = int(input())
word = input()                # ํ›„์œ„ํ‘œ๊ธฐ์‹ ์ €์žฅ
num = [0] * n   	     # ํ”ผ์—ฐ์‚ฐ์ž ์ €์žฅ

for i in range(n):
    num[i] = int(input())  # ํ”ผ์—ฐ์‚ฐ์ž๊ฐ’ ๋ฐ›๊ธฐ

stack = []                    # ํ›„์œ„ํ‘œ๊ธฐ์‹ ๊ณ„์‚ฐํ•  ์Šคํƒ ์ƒ์„ฑ
for i in word :					
    if 'A' <= i <= 'Z' :		# ์•ŒํŒŒ๋ฒณ์ผ๋•Œ stack์— ์ €์žฅํ•œ๋‹ค.
        stack.append(num[ord(i)-ord('A')])  # ํ”ผ์—ฐ์‚ฐ์ž ํ˜•ํƒœ๋กœ ์ €์žฅ
    else :						# ์—ฐ์‚ฐ์ž์ผ ๋•Œ
        str2 = stack.pop()		# stack ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ํ”ผ์—ฐ์‚ฐ์ž 2๊ฐœ๋ฅผ ๊บผ๋‚ด์™€์„œ ๊ณ„์‚ฐํ•œ๋‹ค.
        str1 = stack.pop()
        # ์‚ฌ์น™์—ฐ์‚ฐ ๊ณ„์‚ฐ
        if i =='+' :   
            stack.append(str1+str2)
        elif i == '-' :
            stack.append(str1-str2)
        elif i == '*' :
            stack.append(str1*str2)
        elif i == '/' :
            stack.append(str1/str2)

print('%.2f' %stack[0])			# ์†Œ์ˆ˜์  2๋ฒˆ์งธ ์ž๋ฆฟ์ˆ˜๊นŒ์ง€ ์ถœ๋ ฅ

 

'๋ฐฑ์ค€ > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ๋ฐฑ์ค€ 14402๋ฒˆ  (0) 2022.11.21
[Python] ๋ฐฑ์ค€ 10816๋ฒˆ  (0) 2022.11.21
[Python] ๋ฐฑ์ค€ 2910๋ฒˆ  (0) 2022.11.20
[Python] ๋ฐฑ์ค€ 17413๋ฒˆ  (0) 2022.11.20
[Python] ๋ฐฑ์ค€ 9375๋ฒˆ  (0) 2022.11.12
๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!