기록

[Lesson1] BinaryGap 본문

Algorithm/Codility

[Lesson1] BinaryGap

dev.jung 2021. 6. 3. 11:49

문제


부터 2,147,483,647 사이의 숫자들 중에서 하나가 주어지면

그 숫자를 2진수로 변환했을때 1과 1 사이의 연속적인 0의 길이가 긴 길이를 리턴



풀이

function solution(N) {
    const binary = N.toString(2);
    const binaryGaps = binary.slice(binary.indexOf('1') + 1, binary.lastIndexOf('1'));
    if (!binaryGaps) {
    	return 0;
    }
    const zeroArray = binaryGaps.split('1').map(zeros => zeros.length);
    return Math.max(...zeroArray)
}

binary -> 2진수binaryGaps -> 첫위치 1과 마지막 1 기준 으로 자름.

'100010001' -> '0001000'

!binaryGaps  -> 1이 하나이거나 다거나 없을시 잘라지지않음.
return ->  0;

zeroArray -> 1 기준으로 자르면 0들이 모여있는 요소 가남음

['000', '000']

 

return -> 가장큰수반환 

 



반응형
Comments