IT/Algorithm

코딜리티 Lesson1 binary gap 문제풀기 (javascript)

차가운남자 2021. 2. 22. 23:40

오랜만에 코딩테스트 준비를 하기위해 가볍게 한문제를 풀기로 했다.
그냥 생각이 아는대로 심플하게 생각하고 문제를 풀어보았다.... 심플하게 문제를 풀어야 되는데.....
우선 문제없이 테스트를 통과하게 작성하였다.

function solution(N) {
    const binary = N.toString(2);

    const binaryArr = binary.split('');

    let oneCount = 0;
    let zeroCount = 0;
    let maxZeroCount = 0;

    for(let i =0; i< binaryArr.length; i++){
        if(binaryArr[i] === '1'){
            oneCount++;
            zeroCount = 0;
        }else{
            zeroCount++;
            if(zeroCount > maxZeroCount){
                maxZeroCount = zeroCount;
            }
        }
    }

    if(oneCount < 2) return 0;

    return maxZeroCount;
}

 

영 찝찝해서 구글링을 하여 조금더 깔끔한 코드가 없는지 찾아보게 되었다.

function solution(N) {
	const binaryNum = N.toString(2);	
	const binaryGaps = binaryNum.slice(binaryNum.indexOf('1') + 1, binaryNum.lastIndexOf('1'));
	const zeroCounted = binaryGaps.split('1').map(zeros => zeros.length);
	return zeroCounted.length ? Math.max(...zeroCounted) : 0;
}

아... 이토록 아름답고 간결하게 끝낼수 있다니... 조금더 여러방면으로 생각을 해봐야겠다....

밑에 블로그에서 참조하였습니다.

im-developer.tistory.com/178