์•Œ๊ณ ๋ฆฌ์ฆ˜/์„ ํ˜•๊ตฌ์กฐ

[๋ฐฑ์ค€ 1935 ๐Ÿฅˆ] ํ›„์œ„ ํ‘œ๊ธฐ์‹2

1eehyunji 2023. 7. 10. 00:35

๋ฌธ์ œ

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

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜(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๋ฒˆ์งธ ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•˜๋Š” ํ˜•์‹์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค.