1. ๋ฌธ์ ์ค๋ช
- ์
๋ ฅ :
- ๊ท ํ์กํ ๊ดํธ ๋ฌธ์์ด: '(' ์ ๊ฐ์์ ')' ์ ๊ฐ์๊ฐ ๊ฐ์ ๋ฌธ์์ด
- ์ถ๋ ฅ :
- ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด : ๊ท ํ์กํ ๊ดํธ ๋ฌธ์์ด์ด๋ฉด์ '('์ ')'์ ๊ดํธ์ ์ง๋ ๋ชจ๋ ๋ง๋ ๋ฌธ์์ด
2. ์ฝ๋
solution1.py
def split_to_uv(p):
stack = []
left = 0
right = 0
correct = True #์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ธ์ง ๊ฒ์ฌ
for i,pp in enumerate(p):
if pp == '(':
left+=1
stack.append('(')
else:
right+=1
if len(stack) == 0: #์คํ์ด ๋น์ด์์ผ๋ฉด, ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ ๋ฌธ์์ด
correct = False
else: #์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ฉด
stack.pop()
if left == right: #๊ท ํ์กํ ๋ฌธ์์ด์ด ์์ฑ๋๋ ์๊ฐ
return i+1, correct #v์ ์์ ์ธ๋ฑ์ค, u์ ์ฌ๋ฐ๋ฅธ๊ดํธ๋ฌธ์์ด์ฌ๋ถ ์ ๋ฌ
def solution(p):
#1
if len(p) == 0:
return p
#2
v_idx, u_correct = split_to_uv(p)
u = p[:v_idx]
v = p[v_idx:]
#3
if u_correct == True:
#3-1
return u + solution(v)
#4
else:
#4-1, 4-2, 4-3
answer = '(' + solution(v) + ')'
#4-4
for i in range(1,len(u)-1):
if u[i] == '(':
answer+=')'
else:
answer+='('
#4-5
return answer
3. ํ๊ณ
- ์ฒ์์ ๋ฌธ์ ์์ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋๋ก ๋ณด์ง์๊ณ , input, output๋ง ๋ณด๊ณ ์ง์ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ค๊ณ ํ์๋ค.
- ๋ฌธ์ ๋ฅผ ์ ์ฝ์..!
- ๋ค๋ฅธ๊ฑด ๊ทธ๋๋ก ๊ตฌํํ๋ฉด ๋๊ณ , split_to_uv ๋ u,v๋ฅผ ๋ถ๋ฆฌ์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ธ์ง ํจ๊ป ์ฒดํฌํด์ผํ๋ค.
- ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ธ์ง ํ๋จํ๋ ๊ธฐ์ค์ '(' ๊ฐ ๋์ค๋ฉด stack์ ๋ฃ์ด์ฃผ๊ณ , ')'๊ฐ ๋์์ ๋, ์คํ์ด ๋น์ด์๋์ง ์๋์ง ์ฒดํฌํ๋ ๊ฒ์ด๋ค. ๋น์ด์๋ค๋ฉด ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ ๋ฌธ์์ด!
- ์ฒ์์ split_to_uv()๋ฅผ ์ฒ์ ํธ์ถํ์๋ง์ u์ v ๋๋ค ๊ท ํ์กํ ๋ฌธ์์ด์ด ๋์ด์ผํ๋ ์ค ์์๋๋ฐ, 3๋ฒ์ "๋ฌธ์์ด u๊ฐ "์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด" ์ด๋ผ๋ฉด ๋ฌธ์์ด v์ ๋ํด 1๋จ๊ณ๋ถํฐ ๋ค์ ์ํํฉ๋๋ค. " ๋ฅผ ํตํด ์ฒ์ ํธ์ถํ์ ๋๋ u๋ง ๊ท ํ์กํ ๊ดํธ ๋ฌธ์์ด์ด ๋๋ค๋ ๊ฒ์ ์ ์ ์์๋ค.
- ์ด ๋ฌธ์ฅ์ ํตํด split_to_uv()์์๋ u๊ฐ ๊ท ํ์กํ ๋ฌธ์์ด์ด๋ผ๊ณ ํ๋จ๋ ์๊ฐ์ return ํ๋ฉด ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
- u๊ฐ ๊ท ํ์กํ ๋ฌธ์์ด์ด ๋๊ธฐ ์ํ ๊ธฐ์ค์ left, right ๊ดํธ๊ฐ ์๋ก ๊ฐ์๊ฐ ์ผ์นํ๋ ์ฒซ ์๊ฐ์ด๋ค.
4. Reference
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] K๋ฒ์งธ ์ (Python) (0) | 2022.01.07 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ๋คํธ ๊ฒ์ (Python) (0) | 2022.01.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ์์ถ (Python) (0) | 2022.01.04 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํคํจ๋ ๋๋ฅด๊ธฐ (Python) (0) | 2022.01.03 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ (Python) (0) | 2022.01.02 |