오랜만에 코딩테스트 준비를 하기위해 가볍게 한문제를 풀기로 했다.
그냥 생각이 아는대로 심플하게 생각하고 문제를 풀어보았다.... 심플하게 문제를 풀어야 되는데.....
우선 문제없이 테스트를 통과하게 작성하였다.
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;
}
아... 이토록 아름답고 간결하게 끝낼수 있다니... 조금더 여러방면으로 생각을 해봐야겠다....
밑에 블로그에서 참조하였습니다.
'IT > Algorithm' 카테고리의 다른 글
코딜리티(Codility) Lesson3 PermMissingElem 문제풀기 (0) | 2021.03.02 |
---|---|
코딜리티(Codility) Lesson3 FrogJmp 문제풀기 (0) | 2021.02.28 |
코딜리티(Codility) Lesson2 OddOccurrencesInArray 문제풀기 (javascript) (0) | 2021.02.28 |
코딜리티(Codility) Lesson2 CyclicRotation 문제풀기 (javascript) (0) | 2021.02.24 |
위장 문제 (자바스크립트) (0) | 2019.12.04 |