[Python] ๋ฐฑ์ค€ 1918 - ํ›„์œ„ ํ‘œ๊ธฐ์‹

2020. 11. 2. 01:25ยทAlgorithm

๋ฌธ์ œ

์ˆ˜์‹์€ ์ผ๋ฐ˜์ ์œผ๋กœ 3๊ฐ€์ง€ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฐ์‚ฐ์ž๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ€์šด๋ฐ ์œ„์น˜ํ•˜๋Š” ์ค‘์œ„ ํ‘œ๊ธฐ๋ฒ•(์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค), ์—ฐ์‚ฐ์ž๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž ์•ž์— ์œ„์น˜ํ•˜๋Š” ์ „์œ„ ํ‘œ๊ธฐ๋ฒ•(prefix notation), ์—ฐ์‚ฐ์ž๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž ๋’ค์— ์œ„์น˜ํ•˜๋Š” ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•(postfix notation)์ด ๊ทธ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘์œ„ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ‘œํ˜„๋œ a+b๋Š” ์ „์œ„ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋Š” +ab์ด๊ณ , ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋Š” ab+๊ฐ€ ๋œ๋‹ค.

์ด ๋ฌธ์ œ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฃฐ ํ‘œ๊ธฐ๋ฒ•์€ ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค. ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•์€ ์œ„์—์„œ ๋งํ•œ ๋ฒ•๊ณผ ๊ฐ™์ด ์—ฐ์‚ฐ์ž๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž ๋’ค์— ์œ„์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์“ฐ๋Š” ์ค‘์œ„ ํ‘œ๊ธฐ์‹ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋ง์…ˆ๊ณผ ๊ณฑ์…ˆ์˜ ์šฐ์„ ์ˆœ์œ„์— ์ฐจ์ด๊ฐ€ ์žˆ์–ด ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†์ง€๋งŒ ํ›„์œ„ ํ‘œ๊ธฐ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ˆœ์„œ๋ฅผ ์ ์ ˆํžˆ ์กฐ์ ˆํ•˜์—ฌ ์ˆœ์„œ๋ฅผ ์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ด„ํ˜ธ ๋“ฑ๋„ ํ•„์š” ์—†๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด a+b*c๋ฅผ ํ›„์œ„ ํ‘œ๊ธฐ์‹์œผ๋กœ ๋ฐ”๊พธ๋ฉด abc*+๊ฐ€ ๋œ๋‹ค.

์ค‘์œ„ ํ‘œ๊ธฐ์‹์„ ํ›„์œ„ ํ‘œ๊ธฐ์‹์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๋ฉด ์ด๋ ‡๋‹ค. ์šฐ์„  ์ฃผ์–ด์ง„ ์ค‘์œ„ ํ‘œ๊ธฐ์‹์„ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด์ค€๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ์— ๊ด„ํ˜ธ ์•ˆ์˜ ์—ฐ์‚ฐ์ž๋ฅผ ๊ด„ํ˜ธ์˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด a+b*c๋Š” (a+(b*c))์˜ ์‹๊ณผ ๊ฐ™๊ฒŒ ๋œ๋‹ค. ๊ทธ ๋‹ค์Œ์— ์•ˆ์— ์žˆ๋Š” ๊ด„ํ˜ธ์˜ ์—ฐ์‚ฐ์ž *๋ฅผ ๊ด„ํ˜ธ ๋ฐ–์œผ๋กœ ๊บผ๋‚ด๊ฒŒ ๋˜๋ฉด (a+bc*)๊ฐ€ ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋˜ +๋ฅผ ๊ด„ํ˜ธ์˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ณ ์น˜๋ฉด abc*+๊ฐ€ ๋˜๊ฒŒ ๋œ๋‹ค.

๋‹ค๋ฅธ ์˜ˆ๋ฅผ ๋“ค์–ด ๊ทธ๋ฆผ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด A+B*C-D/E๋ฅผ ์™„์ „ํ•˜๊ฒŒ ๊ด„ํ˜ธ๋กœ ๋ฌถ๊ณ  ์—ฐ์‚ฐ์ž๋ฅผ ์ด๋™์‹œํ‚ฌ ์žฅ์†Œ๋ฅผ ํ‘œ์‹œํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์ค‘์œ„ ํ‘œ๊ธฐ์‹์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ํ›„์œ„ ํ‘œ๊ธฐ์‹์œผ๋กœ ๊ณ ์น˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค

 

์ž…๋ ฅ

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

 

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ํ›„์œ„ ํ‘œ๊ธฐ์‹์œผ๋กœ ๋ฐ”๋€ ์‹์„ ์ถœ๋ ฅํ•˜์‹œ์˜ค


์ •๋‹ต

a = input()
stack = [] #์Šคํƒ
res='' #์ถœ๋ ฅ

for x in a:
    if x.isalpha(): #ํ”ผ์—ฐ์‚ฐ์ž์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ
        res+=x
    else:
        if x == '(':
            stack.append(x)
        elif x == '*' or x =='/':
            while stack and (stack[-1]=='*' or stack[-1]=='/'):
                res+=stack.pop()
            stack.append(x)
        elif x == '+' or x == '-':
            while stack and stack[-1] != '(':
                res += stack.pop()
            stack.append(x)
        elif x == ')':
            while stack and stack[-1] != '(':
                res+=stack.pop()
            stack.pop()

#์Šคํƒ์•ˆ์— ๋‚จ์•„์žˆ๋Š” ๊ฐ’๋“ค pop            
while stack:
    res += stack.pop()
print(res)

'Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ๋ฐฑ์ค€ 2292 - ๋ฒŒ์ง‘  (0) 2020.11.16
[Python] ๋ฐฑ์ค€ 1541 - ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ  (0) 2020.11.09
[Python] ๋ฐฑ์ค€ 2960 - ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด  (0) 2020.10.27
[Python] ๋ฐฑ์ค€ 4673 - ์…€ํ”„ ๋„˜๋ฒ„  (0) 2020.10.21
[Python] ๋ฐฑ์ค€ 1316 - ๊ทธ๋ฃน ๋‹จ์–ด ์ฒด์ปค  (0) 2020.10.06
'Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Python] ๋ฐฑ์ค€ 2292 - ๋ฒŒ์ง‘
  • [Python] ๋ฐฑ์ค€ 1541 - ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ
  • [Python] ๋ฐฑ์ค€ 2960 - ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด
  • [Python] ๋ฐฑ์ค€ 4673 - ์…€ํ”„ ๋„˜๋ฒ„
๐ŸฅญMango
๐ŸฅญMango
  • ๐ŸฅญMango
    AppleMango๐Ÿฅญ
    ๐ŸฅญMango
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • iOS
        • Swift
        • SwiftUI
        • RxSwift
      • Algorithm
        • C
        • Python
        • Swift
      • Computer Science
        • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ
        • OS
      • ...
      • ๊ฐœ๋ฐœ ํƒ€์ž„์บก์А
        • Python
        • Flutter
        • Android
        • Kotlin
        • Java
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํŒŒ์ด์ฌ 6118
    ์ฝ”ํ‹€๋ฆฐ ์ƒ์†
    ์ฝ”ํ‹€๋ฆฐ
    swiftUI Gradients
    MapMarker
    ๋ฐฑ์ค€ ์†Œ์ˆ˜
    ์—ญ์‚ฌ ํŒŒ์ด์ฌ
    1613 ์—ญ์‚ฌ
    14503 ๋กœ๋ด‡์ฒญ์†Œ๊ธฐ
    1613 ํŒŒ์ด์ฌ
    14503 ํŒŒ์ด์ฌ
    swiftUI tabview
    ํ† ๋งˆํ† 
    Swift Hello World!
    Apple Login
    ํŒŒ์ด์ฌ ํ† ๋งˆํ† 
    1์ฐจ์› ๋ฟŒ์š”๋ฟŒ์š”
    IOS
    ํŒŒ์ด์ฌ 1459
    Code Base
    SwiftUI
    ๋ฐฑ์ค€ ํ† ๋งˆํ† 
    ์Šคํƒ
    SwiftUI Apple Login
    ํŒŒ์ด์ฌ ์ •๋ ฌ
    Custom Map Marker
    typing animation
    6118
    ํŒŒ์ด์ฌ 14503
    ํŒŒ์ด์ฌ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.2
๐ŸฅญMango
[Python] ๋ฐฑ์ค€ 1918 - ํ›„์œ„ ํ‘œ๊ธฐ์‹
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”