ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

1918๋ฒˆ: ํ›„์œ„ ํ‘œ๊ธฐ์‹

์ฒซ์งธ ์ค„์— ์ค‘์œ„ ํ‘œ๊ธฐ์‹์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹จ ์ด ์ˆ˜์‹์˜ ํ”ผ์—ฐ์‚ฐ์ž๋Š” A~Z์˜ ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์ˆ˜์‹์—์„œ ํ•œ ๋ฒˆ์”ฉ๋งŒ ๋“ฑ์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  -A+B์™€ ๊ฐ™์ด -๊ฐ€ ๊ฐ€์žฅ ์•ž์— ์˜ค๊ฑฐ๋‚˜ AB์™€ ๊ฐ™์ด *๊ฐ€ ์ƒ๋žต๋˜๋Š” ๋“ฑ์˜ ์ˆ˜์‹๏ฟฝ๏ฟฝ

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 stack์„ ํ™œ์šฉํ•˜๊ณ , ์—ฐ์‚ฐ์‹์— ๋Œ€ํ•œ ํŠน์„ฑ์„ ์ž˜ ์ดํ•ดํ•˜๋ฉด ์‰ฝ๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž์™€ ์—ฐ์‚ฐ์ž์— ๋”ฐ๋ผ, stack์— push ํ• ์ง€๊ฐ€ ๊ฒฐ์ •๋˜๋ฉฐ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„์™€ ๊ด„ํ˜ธ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

 

  • ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด stack์— pushํ•˜์ง€ ์•Š๊ณ  ์ถœ๋ ฅํ•œ๋‹ค. 
  • ์—ฐ์‚ฐ์ž๋Š” stack์— push ํ•œ๋‹ค.
    • stack์— push ํ•˜๊ณ ์ž ํ•˜๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ๋‹ซ๋Š” ๊ด„ํ˜ธ ' ) '๋ผ๋ฉด ์—ฌ๋Š” ๊ด„ํ˜ธ ' ( '๋ฅผ ๋งŒ๋‚ ๋•Œ ๊นŒ์ง€ stack์—์„œ popํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.
    • stack top์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ํ˜„์žฌ ์ž…๋ ฅ๋œ ์—ฐ์‚ฐ์ž ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค๋ฉด, ์šฐ์„  ์ˆœ์œ„๋ฅผ ์œ„ํ•ด ์šฐ์„ ์ ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 ์ฆ‰, ์—ฐ์‚ฐ์ž๋Š” stack์— ํ”ผ์—ฐ์‚ฐ์ž๋Š” ์ถœ๋ ฅ์„ ํ•˜๋ฉด์„œ, stack์— ์ฒ˜๋ฆฌํ•  ์—ฐ์‚ฐ์ž๋“ค์˜ ์šฐ์„ ์ˆœ์œ„์™€ ๊ด„ํ˜ธ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

์ฝ”๋“œ

from sys import stdin

pri = {
    '*': 2,
    '/': 2,
    '+': 1,
    '-': 1,
    '(': 0
}

if __name__ == "__main__":
    math_expr = stdin.readline()[:-1]
    stack = []
    answer = ''
    for c in '(' + math_expr + ')':
        if c.isalpha():
            answer += c
        elif c == '(':
            stack.append(c)
        elif c == ')':
            while True:
                op = stack.pop()
                if op == '(':
                    break
                answer += op
        else:
            while stack and pri[c] <= pri[stack[-1]]:
                answer += stack.pop()
            stack.append(c)

    print(answer)
728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€