본문 바로가기

알고리즘 문제풀이/Codility

Lesson 1 : Iterations - BinaryGap

문제 링크 : 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