๐Ÿงฉ Algorithm/SWEA

[SWEA] 1222. [S/W ๋ฌธ์ œํ•ด๊ฒฐ ๊ธฐ๋ณธ] 6์ผ์ฐจ - ๊ณ„์‚ฐ๊ธฐ1 (Python/D4)

devCloud 2024. 10. 31. 13:44
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com


ํ’€์ด

๐Ÿ’ก ์Šคํƒ ์ด์šฉ

 

์Šคํƒ๊ณผ ํ›„์œ„ํ‘œ๊ธฐ์‹์„ ๋‹ด์„ ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

stack = []
postfix = []
  • ํŒŒ์ด์ฌ์—” ์Šคํƒ ํ•จ์ˆ˜๊ฐ€ ๋”ฐ๋กœ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์ŠคํŠธ๋ฅผ ์Šคํƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
  • ๋ฆฌ์ŠคํŠธ ๋‚ด์žฅํ•จ์ˆ˜์—๋Š” pop(), append(), insert() ๋“ฑ์ด ์žˆ๋‹ค.

 

์ž…๋ ฅ ๋ฐ›์€ ์ค‘์œ„ ํ‘œ๊ธฐ์‹ ๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ธ๋‹ค.

  1. "+" ์ด๋ฉด stack์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  2. ์ˆซ์ž์ด๋ฉด postfix ์— ๋‹ด๋Š”๋‹ค.
    • ์ˆซ์ž์ผ ๋•Œ, stack์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด stack์—์„œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋นผ๊ณ  postfix ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

ํ›„์œ„ ํ‘œ๊ธฐ์‹์„ ๋‹ค ๋๋ƒˆ๋‹ค๋ฉด, postfix ์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ธ๋‹ค.

  • ํ›„์œ„ ํ‘œ๊ธฐ์‹์—์„œ ์ˆซ์ž์ธ ๊ฒƒ๋งŒ int ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๊ฒฐ๊ณผ์— ๋ˆ„์ ํ•˜๋ฉด์„œ ๋”ํ•œ๋‹ค.

 

Solution

for test_case in range(1, 11):
    _ = int(input())
    infix = input().strip()  # ์ค‘์œ„ ํ‘œ๊ธฐ์‹
    stack = []  # ์Šคํƒ
    postfix = []  # ํ›„์œ„ ํ‘œ๊ธฐ์‹
    result = 0  # ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜
    
    for i in infix:
        if i == "+":
            stack.append(i)
        else:
            postfix.append(i)
            if len(stack) > 0:
                postfix.append(stack.pop(0))
                
    for i in postfix:  # ์—ฐ์‚ฐ ๊ฒฐ๊ณผ
        if i != "+":
            result += int(i)
    print(f"#{test_case} {result}")

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

์ด ๋ฌธ์ œ๊ฐ€ ์™œ D4 ์— ์žˆ๋Š”์ง€..? ํ›„์œ„ ํ‘œ๊ธฐ์‹์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ–ˆ๋‹ค๋ฉด ๋” ์ข‹์•˜์„ ํ…๋ฐ, ์ด๊ฑด ๋‹จ์ˆœํžˆ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋งŒ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ํ›„์œ„ ํ‘œ๊ธฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์•„์‰ฌ์šด ๋ฌธ์ œ๋‹ค.

 

๊ทธ๋ž˜๋„ ์ด๋ฒˆ ๊ธฐํšŒ๋กœ ์ „, ํ›„์œ„๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค๋Š” ์ ์ด ๊ดœ์ฐฎ์•˜๋‹ค.

 


 

728x90