반응형
programmers.co.kr/learn/courses/30/lessons/60058
코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴
programmers.co.kr
def solution(s):
if len(s) == 0: # 빈 문자열이면 그대로 반환
return s
else:
idx, check, correct = 0, 0, True # 인덱스, 균형잡힌 괄호 확인 변수, 올바른 괄호 확인 변수
for i in s:
idx += 1
if i == '(':
check += 1
else:
check -= 1
if check < 0 : # '('가 ')' 보다 많아지면 올바른 괄호 x
correct = False
if check == 0: # '('와 ')'의 개수가 같으면 균형잡힌 괄호
break
u = s[:idx] # 최소의 균형잡힌 괄호
v = s[idx:] # 남은 부분
if correct == True: # u가 올바른 괄호이면,
return u + solution(v)
else: # u가 올바르지 않은 균형잡힌 괄호이면,
return '(' + solution(v) + ')' + ''.join(['(' if i == ')' else ')' for i in u[1:-1]])
→ 문제에 기재된 조건대로만 구현하면 됨
반응형
'IT study > 알고리즘 문제 풀이' 카테고리의 다른 글
기둥과 보 설치 (0) | 2021.02.24 |
---|---|
자물쇠와 열쇠 (0) | 2021.02.23 |
문자열 압축 (0) | 2021.02.23 |
블록 게임 (0) | 2021.02.23 |
무지의 먹방 라이브 (0) | 2021.02.22 |