def is_correct(b):
stack = []
for i in b:
if i == '(':
stack.append(i)
elif stack:
stack.pop()
return not stack
def detach(b):
lst_b = list(b)
cnt_l = 0
cnt_r = 0
for i in b:
if i == '(':
cnt_l += 1
else:
cnt_r += 1
if cnt_l == cnt_r:
break
u = b[:cnt_l+cnt_r]
v = b[cnt_l+cnt_r:]
return ''.join(u), ''.join(v)
def reverse(u):
lst_u = list(u)
return ''.join([')' if b == '(' else '(' for b in u[1:-1]])
def recursion(p):
if p == '':
return p
u, v = detach(p)
if is_correct(u):
return u + recursion(v)
else:
return '(' + recursion(v) + ')' + reverse(u)
def solution(p):
return p if is_correct(p) else recursion(p)
โท ์ด ๋ฌธ์ ์ ํต์ฌ์ ๋ณํ๊ณผ์ ์ ๊ฐ ์ํ๊ณผ์ ์ ํจ์ํํ์ฌ ์ฌ๊ทํจ์๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ฌธ์์ด์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๋ is_correct ํจ์, ๋ฌธ์์ด์ ๋ถ๋ฆฌํ๋ detach ํจ์, ๋ฌธ์์ด์ ๋ค์ง๋ reverse ํจ์, ๋ง์ง๋ง์ผ๋ก ์ฌ๊ท๋ฅผ ์ํํ ์ ์๋๋ก recursion ํจ์๋ฅผ ๋ง๋ค์๋ค.
โท ์ฌ๊ทํจ์๋ฅผ ๋ง๋ค ๋, ์ค์ํ ์ ์ ๋ฉ์ถ๋ ์ง์ ์ ์ค์ ํ๋ ๊ฒ์ธ๋ฐ, ๋ฌธ์ ์ ์ค๋ช ์ ๋ฐ๋ผ๊ฐ๋ฉฐ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์์์ ์ค์ ํ๋ ์์ ์ ๋ชจ์ต์ ๋ณด๊ฒ ๋ ๊ฒ์ด๋ค. recursion ํจ์๋ฅผ ๋ฉ์ถ๊ฒ ํ๋ ์ฝ๋๋ if p == '': return p ์ด๋ค.
โถ for i in [String] ๋ฌธ์์ i๋ String์ ํฌํจ๋ ๊ฐ ๊ธ์์ ๋ํด ํ ๋นํ๋ค.
โถ not [True/False] ๋ True/False์ ๋ฐ๋ ๊ฒฐ๊ณผ๋ก ๋ง๋ค์ด์ค๋ค.
โถ ๋ฆฌ์คํธ์ ํฌํจ๋ ๋ฌธ์๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ํฉ์น๊ธฐ ์ํด์๋ ''.Join([List]) ๋ฅผ ์ฌ์ฉํ๋ค.
'Programming > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Level 2] H-Index (Python) (0) | 2020.10.05 |
---|---|
[Level 2] ์์ฅ (Python) (0) | 2020.09.30 |
[Level 2] ์ผ๊ฐ ๋ฌํฝ์ด (Python) (0) | 2020.09.29 |
[Level 2] ์นดํซ (Python) (0) | 2020.09.24 |
[Level 2] ๋ค์ ํฐ ์ซ์ (Python) (0) | 2020.09.24 |