LoginSignup
0
0

More than 1 year has passed since last update.

Codility lesson1 BinaryGap

Last updated at Posted at 2022-06-11

企業の技術テストでCodilityの問題が出されることあり、最近Codilityについて勉強しているので、せっかくだし自分の回答をわかりやすく説明してQuitaに載せておこうと思う。

lesson1のBinaryGapの問題は受け取った値を二進数に変換した際に登場する0の個数に関する問題。
1で区切った際に最大の0の個数はいくつかを聞く問題だ。
例えば1000100の場合は4を返すようにする。

[アルゴリズム]
1.受け取った数値を二進数に変換する。
2.変換された値を桁ごとに区切り、それぞれの値をリストに格納する。
3.リストから要素数分、一つ一つ値を取り出していき、0になった瞬間からカウントを開始、0の個数を保持しておく。
4.0の出た回数をそれぞれを比較し最も多い回数を返せばいい。

具体的にコードを見ていこう。
(なお私のコードは処理速度を速くするためになるべく二重ループはしないように心掛けている。)

def solution(N):
    bin_N = int(format(N,'b'))
    bin_N_list = []

    while bin_N != 0:   #リスト格納部分
        bin_N_list.insert(0,bin_N%10)
        bin_N = bin_N//10

    len_list = len(bin_N_list)
    i = 0   #配列走査のための変数
    zero_count = 0   #0を数えるための変数
    max_zero_count = 0   #zero_countの最大値  while文を回しながら更新していく

    while i < len_list:
        if bin_N_list[i] == 0:
            zero_count +=1
        else:
            if max_zero_count <= zero_count:
                max_zero_count = zero_count
                zero_count = 0
        i +=1
    return max_zero_count

さて結果は。。。。?

スクリーンショット 2022-06-12 0.26.52.png

あれ、少しミスがあったようです。
どこがミスっているかコメントください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0