(コードカタ)-いつも0が出ているので、いくつか数えましょう.
1178 ワード
質問する
양수 N을 이진법으로 바꿨을 때, 연속으로 이어지는 0의 갯수가 가장 큰 값을 return.
이어지는 0은 1과 1사이에 있는 것을 의미.
이런 것을 binary gap 이라고 한다.
input: 9
output: 2
설명: 9의 이진수는 1001.
1과 1사이에 있는 0은 2 이므로, 2를 return
input: 529
output: 4
설명: 529의 이진수는 1000010001.
1과 1사이에 있는 연속된 0의 수는 4와 3.
이 중 큰 값은 4이므로 4를 return
input: 20
output: 1
설명: 20의 이진수는 10100.
1과 1사이에 있는 연속된 0의 수는 1.
(뒤에 있는 0은 1사이에 있는 것이 아니므로)
input: 15
output: 0
설명: 15의 이진수는 1111.
1과 1사이에 있는 0이 없으므로 0을 return
input: 32
output: 0
설명: 32의 이진수는 100000.
1과 1사이에 있는 0이 없으므로 0을 return
最初の解
def solution(N):
bins = format(N, 'b')
zero_count = 0
zero_num = []
for bin in bins:
if bin == '0':
zero_count += 1
else:
zero_num.append(zero_count)
zero_count = 0
return int(max(zero_num))
format関数を使用して、与えられたn(int)をバイナリ文字列に変換します.b前に#を付けると0b
が現れます.その後、数を数えると、2進数のNのstring 0の個数になります.文字が0の場合は1つずつzero countをアップロードし、そうでない場合はzero numというリストにこれまで発見されたzero countの数を順番に入れます.
次にzero countを0に初期化し、0からカウントを再開します.連続する0が必要だから!
そしてzero numで最大の数を返すと終了!
短所
Reference
この問題について((コードカタ)-いつも0が出ているので、いくつか数えましょう.), 我々は、より多くの情報をここで見つけました https://velog.io/@holyja/알고리즘코드카타-0이-자꾸-나오는데-몇-개인지-세어보자テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol