문제 링크 : https://app.codility.com/programmers/lessons/1-iterations/
1. Iterations lesson - Learn to Code - Codility
Find longest sequence of zeros in binary representation of an integer.
app.codility.com
Binary gap은, 어떤 정수 N을 2진법으로 나타냈을 때 1로 둘러싸인 연속된 0을 의미합니다. 276은 2진법으로 나타내면 100010100이 되고, 그럼 000 및 0을 binary gap이라고 할 수 있겠죠. 마지막 00은 1로 둘러싸이지 않았기 때문에 0 binary gap으로 간주하지 않습니다. 어떤 정수 N이 주어졌을 때, 가장 긴 binary gap의 길이를 return하는 함수를 만들면 됩니다.
def solution(N):
N = str(bin(N)[2:]).split('1') #bin(N)을 통해 변환된 수는 '0b'로 시작
return max([len(x) for x in N][:-1]) #가장 마지막 split은 제외
276을 코드와 같이 split하면 ['000','0','00']이 됩니다. 가장 마지막 원소는 binary gap이 아니기 때문에 해당 원소를 제외한 나머지 원소 중 가장 길이가 큰 원소의 길이를 반환합니다.
'알고리즘 문제풀이 > Codility' 카테고리의 다른 글
Lesson 2 : Arrays - OddOccurrencesInArray (0) | 2020.08.07 |
---|---|
Lesson 2 : Arrays - CyclicRotation (0) | 2020.08.07 |