反復バイナリフォーマットコピー[プログラマ]


出典:プログラマーコードテスト練習、反復バイナリフォーマットコピー[プログラマ]

に答える


1.与えられたsが1である前に、ループ文.
2.繰り返しごとにバイナリ変換が1回加算されるので、毎回count1が加算されます.
3.正規表現を使用して文字列からすべての0を減算します.
4.最初の文字列から0を減算し、文字列から1の個数を求める.
5.bin()を文字列長のバイナリ数とする.このときbin()の前に0bを付けているので外します.

コード#コード#

import re

def solution(s):
    count, count_zero = 0, 0
    while s != '1':
        count += 1
        new_s = re.sub('0', '', s)
        count_zero += len(s) - len(new_s)
        s = bin(len(new_s))[2:]
    
    return count, count_zero

def solution(s):
    count, count_zero = 0, 0
    while s != '1':
        count += 1
        count_one = s.count('1') # 정규표현식을 사용하지 않고 count()을 이용해서 푸는 것이 더 깔끔한 것 같다.
        count_zero += len(s) - count_one
        s = bin(count_one)[2:]
    
    return count, count_zero

に感銘を与える

bin()メソッドを使用する場合は、前に0bが貼ってあることに注意して戻ってください!負数の場合は、-0b付きで返却します.