かっこを変換[プログラマ]


問題の概要


https://programmers.co.kr/learn/courses/30/lessons/60058
文字列pは、括弧"("和")からなる.
「(」と「)」の数が同じ場合、この文字列はバランス文字列と呼ばれます.
()のオーバーラップからなるブリッジに良い文字列を正しい文字列と呼ぶ.
文字列pはバランスのとれた文字列である.pを正しい文字列にする方法を親切に再帰的に教えてあげます.コードするだけです.

アイデア


2020年下半期にKakaoの公募で回答した最初の質問を思い出してみましょう
本当にどうすればいいか詳しく教えてくれて、直接コードに移せばいいです.
同じタイプなので、なるべく説明を写して編集したいと思います.

uバランス文字列かヒントか


バランス文字列

思ったより時間がかかりました…

  • 私の根強いKakao問題に対する理解力...uvについて長い間悩んでいたので、どこで分かち合えばいいのか.私はもう3回目にこれらの細部を逃した.
  • Pythonを書くのが下手なのでforc in list a:そしてlist a[c:]なんて書いて…
  • また、このような問題が発生した場合はデバッグを行うべきであるが、分類問題の注釈処理や印刷方法が分からない.
    次は回帰式のケースですが、極端に回帰で処理方法1を繰り返すのですか?テストケースを作って、処理方法1万個の注釈を解き、残りの注釈はこのようにします.
  • Python初心者として、よくできています。

  • 文字列を変更できないことを覚えておいて、リスト
  • に直接変換します.
  • 1.だから私がやったことを忘れず、基本的な条件の下でリストとして扱われている
  • Pythonコード

    def rev(s):
        for i in range(len(s)):
            if s[i]=='(':
                s[i] = ')'
            else:
                s[i] = '('
        return s
    
    def rec(s,d):
        if s ==[]:
            return []
        stck =0
        is_corr = True
        for i in range(len(s)):
            if s[i] == '(':
                stck+=1
            else:
                stck-=1
            if stck < 0:#음수로 떨어진 적이 있다면 올바르지 u가 올바르지 않아서임
                is_corr = False
            if stck ==0:
                u = s[0:i+1]
                v = s[i+1:]
                print("".join(u),"".join(v))
                if is_corr:
                    #print(rec(v,d+1))
                    return u + rec(v,d+1)
                
                else:
                    return ['('] + rec(v,d+1)+[')']+rev(u[1:-1])
    
    def solution(p):
        answer = ''
        answer = "".join(rec(list(p),0))
        return answer