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

 

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

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

programmers.co.kr


내 풀이

def is_balanced(w):
    count=0
    for i in range(len(w)):
        if w[i]=='(':
            count +=1
        else:
            count -=1
   
        if count ==0:
            return w[:i+1],w[i+1:]
   
       
def is_corrected(w):
    temp=[]
    temp.append(w[0])
    for i in range(1,len(w)):
        if w[i] =='(':
            temp.append(w[i])
        else:
            if len(temp) !=0:
                temp.pop()
            else:
                   return False
                   
    if len(temp) == 0:
                   return True
    else:
                   return False



def solution(p):
    answer=''
    if not p:
        return ''
   
    u,v = is_balanced(p)
   
    if is_corrected(u):
        return u + solution(v)
    else:
        answer +='('
       
        answer +=solution(v)
       
        answer +=')'
       
        for p in u[1:len(u)-1]:
            if p=='(':
                answer +=')'
            else:
                answer +='('
        return answer

c++에서 처음 스택 배우면 한번씩은 해보는 괄호 맞추기다.

거기에 좀 변형되긴 했는데 하라는대로 하면 쉽게 풀리는 문제였다.


다른사람의 풀이

 

def solution(p):
    if p=='': return p
    r=True; c=0
    for i in range(len(p)):
        if p[i]=='(': c-=1
        else: c+=1
        if c>0: r=False
        if c==0:
            if r:
                return p[:i+1]+solution(p[i+1:])
            else:
                return '('+solution(p[i+1:])+')'+''.join(list(map(lambda x:'(' if x==')' else ')',p[1:i]) ))

 

사고가 아직 파이써닉 하지 못한거같다. 특히 람다로 표현한 리턴값은 예술이다.


마지막 학년이기도하고, 인턴 준비에 서류도내고, 기말준비, 거기다 7월에 있을 정처기 자격증까지 준비한다고 

'적어도'  하루에 한개는 문제를 푸려고했던 계획을 하나도 지키지 못하고 있다.

2학년 3학년 때 논것을 땅을 치고 후회한다.. 좀 열심히 살걸

 

'취준 > 프로그래머스' 카테고리의 다른 글

튜플 - 파이썬  (0) 2022.06.23
뉴스 클러스터링 - 파이썬  (0) 2022.06.15
메뉴 리뉴얼 - 파이썬  (0) 2022.06.06
행렬 테두리 회전하기 - 파이썬  (0) 2022.06.06
짝 지어 제거하기 - 파이썬  (0) 2022.06.02

+ Recent posts