TIL CODE KATA WEEK 4 DAY 1

코딩요정·2022년 6월 13일
0

to start with..

원래는 코드카타보면 헐.. 이거뭐야... 나무서워... 이러던 나였는데 오늘문제는 웬일로 어?! 이거 비빌만하겠다라는 생각이들었다. 이것이 월요일의힘? 휴식의힘? 바로바로 봐보자

문제

풀이

const solution = N => {
  const binary = N.toString(2)
    const binaryTwo= binary.split('1');
      const gap = binaryTwo.map(el => el.length)
        if (gap.length ===2) {
         return 0;
       }    
        if (binary[binary.length-1] === '0') {
        gap.pop();
      }
        return Math.max(...gap);
}
console.log(solution(72))

깔끔버전

const solution = N => {
  const binary = N.toString(2);// 이진법으로 바꿔주기
   console.log(binary);// "1001000"
    const binaryTwo= binary.split('1');//1을 기준으로 나눠주기
     console.log(binaryTwo); //["", "00", "000"]
      const gap = binaryTwo.map(el => el.length);//map 함수를써서  length를  배열의 값으로 넣어주기
       console.log(gap); //[0, 2, 3]
        if (gap.length ===2) { /// 조건1
         return 0;
       }    
        if (binary[binary.length-1] === '0') { /// 조건 2
        gap.pop();
      }
        return Math.max(...gap); //gap에서 가장큰 수를 return값으로 내보내기
}

console.log(solution(72)); //2

해설버전

처음에는 1을 기준으로 나눠서 for문을 돌린다음에 그안에서 맥스값을 찾아내려고 하다가 높은벽에 부딫혀 다른방법을 찾다가, 나의 저스트코드 스승님이신 갓진우님께서 map과 pop을 쓰면 되겠다고 알려주셔서 풀이방법이나왔다. 다른것은 어느정도 해설버전에 들어가있고 콘솔도 드럽게 많이 찍었으니 알겠지만, 조건에 대한 해설을 조금더 덧붙히려고한다. 조건 1은 2진법 기준 100, 10000등 1과 1사이에 들어가지않는 0들에 대한 조건이고 조건 2는 10010000등 1과 1사이에 있는 0 들도있고 1과 1사이에 있지 않는 0들이 공존할때 뒤에 0을 떼버리는 조건이다. 늦바람이 무섭다고 콘솔을 어떻게 찍어야하는지 이제 조금 감이와서 많이 찍어보면서 하려고하는점은 칭찬해주고싶지만 효율적으로 찍으면 더 좋을것같다.

profile
용사님 힘을내세요~!

0개의 댓글