반응형

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

+ Recent posts