์ ์ฒด์ฝ๋
import sys
sys.stdin=open("C:\\input.txt",'rt')
# input : ()(((()())(())()))(())  # ๊ฒฐ๊ณผ : 17
s = input()
stack = []
cnt =0
for i in range(len(s)):
    #์ด๋ฆฐ ๊ดํธ
    if s[i] =='(':
        stack.append(s[i])
    #๋ซ๋ ๊ดํธ
    else:
        stack.pop()
        # ๋ฐ๋ก ์์ด ์ด๋ฆฐ ๊ดํธ์ผ๋
        if s[i-1] == '(':
            cnt += len(stack)
        # ๋ฐ๋ก ์์ด ๋ซํ ๊ดํธ์ผ๋
        else:
            cnt+=1
print(cnt)
๊ดํธ ๋ฌธ์์ด ()(((()())(())()))(())๋ ์ ๋ง๋๊ธฐ์ ๋ ์ด์ ๋ฅผ ๋ํ๋.
- ๋ ์ด์ : () (์ด๋ฆฐ ๊ดํธ ( ๋ค์์ ๋ฐ๋ก ๋ซํ )์ด ๋์ค๋ ๊ฒฝ์ฐ)
- ์ ๋ง๋๊ธฐ: ๋ ์ด์ ๋ฅผ ๋ง๋๋ฉด ์กฐ๊ฐ์ด ๋์ด๋จ
์ด ์ฝ๋๋ ๋ ์ด์ ๊ฐ ๋ง๋๊ธฐ๋ฅผ ์๋ฅผ ๋ ์กฐ๊ฐ ๊ฐ์๋ฅผ ์ธ๋ ์๊ณ ๋ฆฌ์ฆ์ด์ผ.
๐ ์ฝ๋ ๋ถ์
s = input() # ์
๋ ฅ ๋ฐ๊ธฐ stack = [] # ์คํ (์ ๋ง๋๊ธฐ์ ์ด๋ฆฐ ๊ดํธ๋ฅผ ์ ์ฅ) cnt = 0 # ์กฐ๊ฐ ๊ฐ์- s: ์ ๋ ฅ ๋ฌธ์์ด
- stack: ์ด๋ฆฐ ๊ดํธ๋ฅผ ์ ์ฅํ๋ ์คํ
- cnt: ์๋ฆฐ ์กฐ๊ฐ ๊ฐ์๋ฅผ ์ ์ฅํ๋ ๋ณ์
๐ for๋ฌธ ๋์ ๊ณผ์ 
for i in range(len(s)): # ๋ฌธ์์ด ๊ธธ์ด๋งํผ ๋ฐ๋ณต๋ฌธ์์ด์ ํ ๊ธ์์ฉ ํ์ธํ๋ฉด์ ์ฒ๋ฆฌ!
โ ์ด๋ฆฐ ๊ดํธ ( ์ผ ๋ → ์คํ์ ์ถ๊ฐ
if s[i] == '(': stack.append(s[i])- ์ด๋ฆฐ ๊ดํธ๊ฐ ๋์ค๋ฉด ์ ๋ง๋๊ธฐ์ ์์์ด๋ฏ๋ก ์คํ์ ์ถ๊ฐ
โ ๋ซ๋ ๊ดํธ ) ์ผ ๋ → ์คํ์์ ๊บผ๋
else: stack.pop() # ์คํ์์ '(' ์ ๊ฑฐ (์ ๋ง๋๊ธฐ์ ๋ or ๋ ์ด์ )- ๋ซํ ๊ดํธ๊ฐ ๋์ค๋ฉด ์ ๋ง๋๊ธฐ ํ๋๊ฐ ๋๋๊ฑฐ๋ ๋ ์ด์ ์
- ๋ฌด์กฐ๊ฑด stack.pop() → ์ด์ ์ ์ด๋ฆฐ (์ ์ ๊ฑฐ
โ () → ๋ ์ด์ ์ผ ๊ฒฝ์ฐ
if s[i-1] == '(': cnt += len(stack) # ํ์ฌ ๋จ์ ์๋ ์ ๋ง๋๊ธฐ์ ๊ฐ์๋งํผ ์ถ๊ฐ- ๋ฐ๋ก ์ ๊ธ์๊ฐ (์ด๋ฉด ๋ ์ด์ ! (())
- ๋ ์ด์ ๋ฅผ ๋ง๋๋ฉด ํ์ฌ ์คํ์ ์๋ ์ ๋ง๋๊ธฐ์ ๊ฐ์๋งํผ ์กฐ๊ฐ ์ถ๊ฐ
์์ :
(()(((()())(())()))(())) ↑ ↑↑ ↑ ↑ ๋ ์ด์ ๊ฐ ์๋ ๊ณณ (์ด์  ๋ฌธ์๊ฐ '(')- ์ด ์์น์์ stack์ ์๋ ์ ๋ง๋๊ธฐ ๊ฐ์๋งํผ ์กฐ๊ฐ์ด ์๊น!
โ ์ ๋ง๋๊ธฐ ๋ ()) → ํ ์กฐ๊ฐ ์ถ๊ฐ)
else: cnt += 1 # ๋ง๋๊ธฐ์ ๋ ๋ถ๋ถ → 1์กฐ๊ฐ ์ถ๊ฐ- ()๊ฐ ์๋๋ผ ๋จ์ํ ))์ผ ๊ฒฝ์ฐ → ์ ๋ง๋๊ธฐ์ ๋
- ์ด ๊ฒฝ์ฐ ๋ง๋๊ธฐ์ ๋ง์ง๋ง ์กฐ๊ฐ 1๊ฐ ์ถ๊ฐ
๐ ์์  ์คํ ๊ณผ์ 
์ ๋ ฅ:
()(((()())(())()))(())๊ณผ์ :
i๋ฌธ์๋์stackcnt
| 0 | ( | ์คํ ์ถ๊ฐ | [()] | 0 | 
| 1 | ) | ๋ ์ด์  | [] | 0 + 0 = 0 | 
| 2 | ( | ์คํ ์ถ๊ฐ | [()] | 0 | 
| 3 | ( | ์คํ ์ถ๊ฐ | [(, ()] | 0 | 
| 4 | ( | ์คํ ์ถ๊ฐ | [(, (, ()] | 0 | 
| 5 | ( | ์คํ ์ถ๊ฐ | [(, (, (, ()] | 0 | 
| 6 | ) | ๋ ์ด์  | [(, (, ()] | 3 + 0 = 3 | 
| 7 | ( | ์คํ ์ถ๊ฐ | [(, (, (, ()] | 3 | 
| 8 | ) | ๋ง๋๊ธฐ ๋ | [(, (, ()] | 3 + 1 = 4 | 
| 9 | ) | ๋ง๋๊ธฐ ๋ | [(, ()] | 4 + 1 = 5 | 
| 10 | ( | ์คํ ์ถ๊ฐ | [(, (, ()] | 5 | 
| 11 | ( | ์คํ ์ถ๊ฐ | [(, (, (, ()] | 5 | 
| 12 | ) | ๋ ์ด์  | [(, (, ()] | 5 + 3 = 8 | 
| 13 | ) | ๋ง๋๊ธฐ ๋ | [(, ()] | 8 + 1 = 9 | 
| 14 | ) | ๋ง๋๊ธฐ ๋ | [()] | 9 + 1 = 10 | 
| 15 | ( | ์คํ ์ถ๊ฐ | [(, ()] | 10 | 
| 16 | ) | ๋ ์ด์  | [()] | 10 + 1 = 11 | 
| 17 | ) | ๋ง๋๊ธฐ ๋ | [] | 11 + 1 = 12 | 
์ต์ข ๊ฒฐ๊ณผ:
17 
๐ฏ ์ฝ๋ ํต์ฌ ์์ฝ
- ( → ์คํ์ ์ถ๊ฐ (์ ๋ง๋๊ธฐ ์์)
- )
- ์์ด ( (()) → ๋ ์ด์ 
 → ํ์ฌ ์คํ ๊ธธ์ด(=ํ์ฌ ๋จ์ ์๋ ์ ๋ง๋๊ธฐ ๊ฐ์)๋งํผ cnt ์ฆ๊ฐ
- ์์ด ) ())) → ์ ๋ง๋๊ธฐ ๋
 → cnt์ 1 ์ถ๊ฐ
 
- ์์ด ( (()) → ๋ ์ด์ 
๐ ์ต์ ํ๋ ์ฝ๋
์ด ์ฝ๋๋ ์คํ์ ํ์ฉํ O(n) ์๊ฐ ๋ณต์ก๋ ์๊ณ ๋ฆฌ์ฆ์ด์ผ!
(๋ฌธ์์ด์ ํ ๋ฒ๋ง ์ค์บํ๋ฏ๋ก ๋งค์ฐ ๋น ๋ฆ)
'์๊ณ ๋ฆฌ์ฆ ๐ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 5. ๊ณต์ฃผ๊ตฌํ๊ธฐ(ํ)_ํ์ด์ฌ (0) | 2025.02.17 | 
|---|---|
| 3. ํ์ ํ๊ธฐ์ ๋ง๋ค๊ธฐ : infix-->postfix (์คํ) (0) | 2025.02.13 | 
| 1. ๊ฐ์ฅ ํฐ ์(์คํ)_python (0) | 2025.02.13 | 
| ๋๋ช ๋๋ฌผ ์ ์ฐพ๊ธฐ (0) | 2024.11.10 | 
| ์ฝ๋ฉํ ์คํธ ์ถ์  ๊ฒฝํฅ/ ์ฑ์  ๊ธฐ์ค (0) | 2023.10.09 | 
 
                    
                   
                    
                  