티스토리 뷰

코딩테스트

괄호 변환

ajaa 2024. 12. 5. 12:11

📌문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

📌풀이

문제에 제시된 알고리즘을 재귀적으로 구현

 

📌코드

#균형 잡힌 문자열의 인덱스 반환
def balanced_index(p):
    count=0 #왼쪽 괄호 개수
    for i in range(len(p)):
        if p[i]=='(':
            count+=1
        else:
            count-=1
        if count==0:
            return i
        
#올바른 괄호 문자열인지 판단
def check_proper(p):
    count=0 #왼쪽 괄호 개수
    for i in p:
        if i=='(':
            count+=1
        else:
            if count==0: #쌍이 맞지 않은 경우 False
                return False
            count-=1
    return True #쌍이 맞는 경우 True
        

def solution(p):
    answer = ''
    if p=='':
        return answer
    index=balanced_indexp(p) #균형 잡힌 괄호 문자열의 인덱스
    u=p[:index+1]
    v=p[index+1:]
    #올바른 괄호 문자열이면 v에 대해 함수를 수행한 결과 붙여 반환
    if check_proper(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

 

📌참고

https://g.co/kgs/eyd5SSd

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년

www.google.com

 

 

'코딩테스트' 카테고리의 다른 글

국영수  (2) 2024.12.07
연산자 끼워 넣기  (1) 2024.12.06
경쟁적 전염  (0) 2024.12.04
연구소  (2) 2024.12.02
특정 거리의 도시 찾기  (0) 2024.12.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함