Fantastic Chu's World

[2020KAKAO][Python] 괄호 변환 본문

Python/구현

[2020KAKAO][Python] 괄호 변환

Mr_Chu 2020. 9. 11. 23:51

programmers.co.kr/learn/courses/30/lessons/60058

 

코딩테스트 연습 - 괄호 변환

카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴�

programmers.co.kr

# 올바른 괄호 문자열인지 판단
def check(p):
    cnt = 0
    for i in range(len(p)):
        if p[i] == '(':
            cnt += 1
        else:
            if cnt == 0: # 올바르면 마지막에 0이 된다
                return False # 중간에 0이 되면 X
            cnt -= 1
    return True
# 균형잡힌 괄호 문자열의 인덱스 반환
def balance_index(p):
    id = 0
    for i in range(len(p)):
        if p[i] == '(':
            id += 1
        else: id -= 1
        if id == 0:
            return i

def solution(p):
    answer = ''
    if p == '':
        return answer
    
    index = balance_index(p)
    u = p[:index+1]
    v = p[index+1:]
    
    if check(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

조건대로만 짜면 되는 문제

* 리스트 -> 문자열 : "구분자".join(리스트)

* 문자열 -> 리스트 : .split("구분자")

Comments