728x90
[๋ฌธ์ ๋งํฌ] ๐
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
ํ์ด
๐ก ์คํ ์ด์ฉ
์คํ๊ณผ ํ์ํ๊ธฐ์์ ๋ด์ ๋ฆฌ์คํธ ์์ฑ
stack = []
postfix = []
- ํ์ด์ฌ์ ์คํ ํจ์๊ฐ ๋ฐ๋ก ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ์คํธ๋ฅผ ์คํ์ฒ๋ผ ์ฌ์ฉํ๋ฉด ๋๋ค.
- ๋ฆฌ์คํธ ๋ด์ฅํจ์์๋ pop(), append(), insert() ๋ฑ์ด ์๋ค.
์ ๋ ฅ ๋ฐ์ ์ค์ ํ๊ธฐ์ ๋ฆฌ์คํธ์์ ํ๋์ฉ ๊บผ๋ธ๋ค.
- "+" ์ด๋ฉด stack์ ์ถ๊ฐํ๋ค.
- ์ซ์์ด๋ฉด 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
'๐งฉ Algorithm > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SWEA] 19185. ์ก์ญ๊ฐ์ (Python/D3) (0) | 2024.11.03 |
|---|---|
| [SWEA] 10912. ์ธ๋ก์ด ๋ฌธ์ (Python/D3) (0) | 2024.11.01 |
| [SWEA] 13547. ํ์จ๋ฆ (Python/D3) (0) | 2024.10.30 |
| [SWEA] 1229. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 8์ผ์ฐจ - ์ํธ๋ฌธ2 (Python/D3) (0) | 2024.10.30 |
| [SWEA] 1228. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 8์ผ์ฐจ - ์ํธ๋ฌธ1 (Python/D3) (0) | 2024.10.30 |