Programmers-繰り返しバイナリ変換(Python)



問題の説明


0と1からなる任意の文字列xに対して、次のバイナリ形式のコピーを定義します.
  • xのすべての0を削除します.
  • xの長さをcと呼ぶと、xを「バイナリで表される文字列」に置き換えます.
  • 例えば、x=「011010」の場合、xをバイナリ変換すると、x=「011010」->「1111」->「100」となる.
    パラメータが0と1の文字列s.sが「1」になるまでsをバイナリ変換し続け、バイナリ変換の回数と変換中に削除されたすべての0の個数を配列に入れて返します.

    せいげんじょうけん

  • sの長さは1以上150,000以下である.
  • sは、少なくとも1つの「1」を含む.
  • I/O例


    sresult"110010101001"[3,8]"01110"[3,3]"1111111"[4,1]

    I/O例説明


    I/O例#1
  • "110010101001"が"1"になる前に、バイナリ変換を行います.
  • バイナリ変換前に消去する0個の数0消去後の長さは、1"110010101001"662"110""123"10"11"11
  • 3バイナリ変換中に8個の0が削除されたため、[3,8]を返さなければならない.
  • I/O例#2
  • "01110"が"1"になる前に、バイナリ変換を実行します.
  • 2次バイナリ変換前に削除する0個の数0を除いた長さは、1"01110"232"11"023"10"11
  • 3回のバイナリ変換時に3つの0が削除されたため、[3,3]を返さなければならない.
  • I/O例#3
  • "111111111"が"1"になる前に、バイナリ変換を実行します.
  • 2次バイナリ変換前に消去する0個数0消去後、長さは1"111111""072""111""033""11"024"10"11
  • 4回のバイナリ変換中に1つの0が削除されたため、[4,1]を返さなければならない.
  • ハーモニー

    def solution(s):
        answer = []
    
        # (1)
        cnt_binary = 0
    
        # (2)
        cnt_zero = 0
    
        while 1:
            # (3)
            if s == "1":
                break
    
            # (4)
            cnt_binary += 1
    
            # (5)
            cnt_zero += s.count("0")
    
            # (6)
            s = s.replace("0", "")
    
            # (7)
            len_s = len(s)
    
            # (8)
            s = bin(len_s)[2:]
    
        # (9)
        answer.append(cnt_binary)
        answer.append(cnt_zero)
    
        return answer
    
    
    s = "110010101001"
    
    print(solution(s)) # 결과 예 : [3,8]
    (1):バイナリ変換回数を決定するための変数cnt binary
    (2):sごとに存在する0個の数を決定する変数cnt zero.
    (3):while文終了条件
    (4):whileドアが閉まらない場合cnt 1が増加
    (5):sに存在する「0」の個数を決定し、cnt 0に加算する
    (6):replace()メソッドを使用して、sの0を毎回削除する
    (7):sに存在する1の個数がlen(s)に等しく、len s変数に割り当てられる
    (8):len sをバイナリ値に変換し、sを再入力
    (9):while文が終了すると,最終的に求めたcnt binary,cnt zeroを解答に割り当てる.

    📝 結果



    😃 に感銘を与える


    過去に
  • count、replace、binなどの方法を学んだことがあるので、この問題は比較的容易なもののようだ.
  • 👍 Irishのすべてのコードを表示


    -> Irish Github