괄호변환 (문자열, 구현)

2023. 7. 2. 19:52·Coding Test/programmers
728x90
"""
p는 '(' 와 ')' 로만 이루어진 문자열이며 길이는 2 이상 1,000 이하인 짝수입니다.
문자열 p를 이루는 '(' 와 ')' 의 개수는 항상 같습니다.
"""
def solution(p):
    if p=='': # 1
        return p

    r=True
    c=0
    for i in range(len(p)): # 2
        if p[i]=='(':
            c-=1
        else:
            c+=1

        if c>0: # 순서 올바르지않음
            r=False

        if c==0:
            if r: # 3
                return p[:i+1]+solution(p[i+1:])
            else: # 4
                return '('+solution(p[i+1:])+')'+''.join(list(map(lambda x:'(' if x==')' else ')',p[1:i]) ))
def r(w):
    a = 0
    b = 0
    
    for i in range(len(w)):
        if w[i] == "(":
            a += 1
        elif w[i] == ")":
            b += 1
        if a == b:  # 균형잡힌
            return w[:i+1], w[i+1:]


def ck(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 = ''

    # 1
    if not p:
        return ''

    # 2
    u, v = r(p)

    if ck(u):  # 3
        return u + solution(v)  # 3-1
    else:  # 4
        answer += '('  # 4-1
        answer += solution(v)  # 4-2
        answer += ')'  # 4-3

        for j in u[1:len(u) - 1]:  # 4-4
            if j == '(':
                answer += ')'
            else:
                answer += '('
        # 4-5
        return answer

 

728x90
저작자표시 비영리 변경금지 (새창열림)
'Coding Test/programmers' 카테고리의 다른 글
  • 압축 (ascii_uppercase, 알파벳 딕셔너리)
  • 실패율 (list.count() 함수)
  • 비밀지도 (리스트 zip(), 문자열 rjust() 메서드)
  • 캐시 (구현)
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DP
    재귀
    최단거리
    프로그래머스
    구간합
    큐
    구현
    그리디
    트리
    힙
    백준
    BFS
    Algorithm
    그래프
    월간코드챌린지
    플로이드워셜
    DFS
    덱
    알고리즘
    최대공약수
    동적계획법
    정렬
    자료구조
    파이썬
    스택
    최소신장트리
    이분탐색
    LIS
    조합
    다익스트라
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
괄호변환 (문자열, 구현)
상단으로

티스토리툴바