티스토리 뷰

이진수 10001이 있다면 1과 1사이에 0이 몇개있는지를 반환하는 함수를 작성합니다.
100100001 처럼 1이 여러개 있다면 가장 큰 0의 수인 4를 반환하면 됩니다.
1000 처럼 1과 1사이의 0이 없으면 0을 반환합니다.
숫자 범위는 1 부터 2,147,483,647 입니다.
함수명: function solution(N);
입력값: 10진수

// 개선
const solution = (N) => {
  const bin = N.toString(2);

  let cnt = 0;
  let result = 0;
  
  [...bin].forEach(n => {
  	if (n === '1') {
    	result = result < cnt ? cnt : result;
        cnt = 0;
    } else {
    	cnt++;
    }
    
   return result; 
  };

// 기존
function sulution2(N) {
  const bin = N.toString(2);
  
  for (let i = 0; i < e.length; i++) {
    if (Number(e.charAt(i)) === 0) {
      yong++;
    } else {
      if (yong > maxCount) {
        maxCount = yong;
      }
      yong = 0;
    }
  }
  return maxCount;
}

solution(2189378123421);
solution2(2189378123421);

// 2진수 - 11111110111000001000110101111011010011101 
// 결과: 1과1 사이의 0 최대개수는 5
댓글
최근에 올라온 글
최근에 달린 댓글
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Total
Today
Yesterday