Development/CodingTest
[νλ‘κ·Έλλ¨Έμ€] Python κ΄νΈλ³ν
Kirok Kim
2022. 1. 23. 22:35
1. νμ΄
def solution(p):
if p=='': return p
r=True; c=0
for i in range(len(p)):
if p[i]=='(': c-=1
else: c+=1
if c>0: r=False
if c==0:
if r:
return p[:i+1]+solution(p[i+1:])
# u v
else:
return '('+solution(p[i+1:])+')'+''.join(list(map(lambda x:
'(' if x==')' else ')',p[1:i]) )) ## μΌνμ μλμ κ°μ κ²°λ‘ μλ νμ΄μ ννλ§ λ€λ¦
# μ΄κ±΄ μ λ€ ν κ°μ© μ κ±°
2. νμ΄
def parse(str):
correct =True ## μ¬λ°λ₯Έ λ¬Έμμ΄ νλ¨
left =0 ## μ΄λ¦°κ΄νΈ
right=0 ## λ«νκ΄νΈ
st=[] ## μ€νꡬ쑰
for i in range(len(str)):
if str[i]=='(':
left+=1
st.append('(')
else:
right+=1
if len(st)==0:
correct=False ## μλ§λκ²½μ°
else: ## μ΄λ¦° κ΄νΈκ° μ€νμ μλ κ²½μ° μ§μ΄ λ§μ κ²½μ°
st.pop() ## μ€νμμ μμ°
if left==right:
return i + 1, correct
## vμ μΈλ±μ€
return 0,False ## μλ¬μλκ²½μ° λ¬Έμ μμμλ κ· νμ‘ν κ΄νΈλ§ μ£Όμ΄μ§λ μ΄λ΄μΌ μμ
## μ§λ¬Έλ΄μ© κ·Έλλ‘ μ½λ ꡬν
def solution(p):
if len(p)==0:
return p
pos,correct=parse(p)
u = p[:pos]
v=p[pos:]
if correct:
return u + solution(v)
answer = '('+ solution(v)+')'
for i in range(1,len(u)-1):
if u[i]=='(':
answer+=')'
else:
answer+='('
return answer
λ°μν