티스토리 뷰
📌문제
https://school.programmers.co.kr/learn/courses/30/lessons/60058
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌풀이
문제에 제시된 알고리즘을 재귀적으로 구현
📌코드
#균형 잡힌 문자열의 인덱스 반환
def balanced_index(p):
count=0 #왼쪽 괄호 개수
for i in range(len(p)):
if p[i]=='(':
count+=1
else:
count-=1
if count==0:
return i
#올바른 괄호 문자열인지 판단
def check_proper(p):
count=0 #왼쪽 괄호 개수
for i in p:
if i=='(':
count+=1
else:
if count==0: #쌍이 맞지 않은 경우 False
return False
count-=1
return True #쌍이 맞는 경우 True
def solution(p):
answer = ''
if p=='':
return answer
index=balanced_indexp(p) #균형 잡힌 괄호 문자열의 인덱스
u=p[:index+1]
v=p[index+1:]
#올바른 괄호 문자열이면 v에 대해 함수를 수행한 결과 붙여 반환
if check_proper(u):
answer=u+solution(v)
#올바른 괄호 문자열 아니라면
else:
answer='('
answer+=solution(v)
answer+=')'
u=list(u[1:-1]) #첫번째와 마지막 문자 제거
for i in range(len(u)):
if u[i]=='(':
u[i]=')'
else:
u[i]='('
answer+="".join(u)
return answer
📌참고
이것이 취업을 위한 코딩 테스트다 with 파이썬
IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년
www.google.com