Algorithm/Stack & Queue

[프로그래머스] 괄호 변환 (2020 KaKao Blind ) Python 파이썬풀이

안드선생 2021. 4. 21. 22:03
반응형

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

 

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

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

programmers.co.kr

문제 설명

잘못된 괄호를 올바른 괄호 형식으로 바꾸는 문제입니다.

실제 카카오 코딩테스트 기출문제 답게 문제가 상당히 길어서 위 링크를 꼭 확인하시길 바랍니다.

문제에 대한 설명이 위 링크에 자세히 나옵니다!


풀이 과정

스택을 이용한 단순 구현 문제입니다.

해당 설명에 따라서 그대로 구현만 해주시면 특별히 어려움은 없을거에요.

코드에 대해 궁금하신 사항이 있으시면 댓글 남겨주세요!

def step2(p):
    count = 0
    for i in range(len(p)):
        if p[i] == "(":
            count += 1
        else:
            count -= 1
        if count == 0:
            return p[:i+1], p[i+1:]

def step3(u):
    stack = []
    for i in u:
        if i == "(":
            stack.append(i)
        else:
            if not stack:
                return False
            stack.pop()
    return True


def solution(p):
    answer = ''
    #step1
    if not p:
        return ''

    #step2
    u, v = step2(p)

    #step3
    if step3(u):
        return u+solution(v)

    #step4
    #4-1
    answer += "("

    #4-2
    answer += solution(v)

    #4-3
    answer += ")"

    #4-4
    for i in u[1:-1]:
        if i == "(":
            answer += ")"
        else:
            answer += "("
    #4-5
    return answer

print(solution("(()())()"))

 

https://github.com/HongEunho

전체 문제 & 코드는 위의 깃에 정리되어 있습니다.

팔로우 & 맞팔은 환영입니다 !

반응형