코테 노트/프로그래머스

Level 2 괄호 변환 <2020 KAKAO BLIND RECRUITMENT> Python 3

화요밍 2021. 9. 5. 23:39
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/60058?language=python3 

 

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

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

programmers.co.kr

 

최종 코드

 

GitHub - hwayeon351/Programmers-Algorithms: 프로그래머스 알고리즘 소스 코드 모음

프로그래머스 알고리즘 소스 코드 모음. Contribute to hwayeon351/Programmers-Algorithms development by creating an account on GitHub.

github.com

import sys
sys.setrecursionlimit(20000000)
def make(w):
    #1.
    if len(w) == 0: return ""
    
    #2. u, v로 분리
    u = ""
    v = ""
    for i in range(len(w)):
        u += w[i]
        if u.count('(') == u.count(')'):
            break
    v = w[i+1:]

    #3. u 체크
    stack = []
    for c in u:
        if not stack:
            stack.append(c)
            continue
        if stack[-1] == "(": 
            if c == ")": stack.pop()
            else: stack.append(c)
        else: stack.append(c) 

    #3-1.
    if len(stack) == 0: 
        return u+make(v)
    
    #4-1.
    ans = "(" + make(v) + ")"
    for i in range(1, len(u)-1):
        if u[i] == "(": ans += ")"
        else: ans += "("
    return ans
    
def solution(p):
    answer = make(p)
    
    return answer

풀이 과정

풀이 시간 36분

 

import sys
sys.setrecursionlimit(20000000)
def make(w):
    #1.
    if len(w) == 0: return ""
    
    #2. u, v로 분리
    u = ""
    v = ""
    for i in range(len(w)):
        u += w[i]
        if u.count('(') == u.count(')'):
            break
    v = w[i+1:]

    #3. u 체크
    stack = []
    for c in u:
        if not stack:
            stack.append(c)
            continue
        if stack[-1] == "(": 
            if c == ")": stack.pop()
            else: stack.append(c)
        else: stack.append(c) 

    #3-1.
    if len(stack) == 0: 
        return u+make(v)
    
    #4-1.
    ans = "(" + make(v) + ")"
    for i in range(1, len(u)-1):
        if u[i] == "(": ans += ")"
        else: ans += "("
    return ans
    
def solution(p):
    answer = make(p)
    
    return answer

참고

 

Level 3 기둥과 보 설치 <2020 KAKAO BLIND RECRUITMENT> Python 3

https://programmers.co.kr/learn/courses/30/lessons/60061?language=python3 코딩테스트 연습 - 기둥과 보 설치 5 [[1,0,0,1],[1,1,1,1],[2,1,0,1],[2,2,1,1],[5,0,0,1],[5,1,0,1],[4,2,1,1],[3,2,1,1]] [[1,0,0..

hwayomingdlog.tistory.com

 

Level 3 외벽 점검 <2020 KAKAO BLIND RECRUITMENT> Python 3

https://programmers.co.kr/learn/courses/30/lessons/60062?language=python3# 코딩테스트 연습 - 외벽 점검 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기..

hwayomingdlog.tistory.com

  • 7. 블록 이동하기 -> 
728x90
반응형