Bit Counting

SungJunEun·2021년 10월 29일
0

Codewars 문제풀이

목록 보기
1/26
post-thumbnail

Description:

Write a function that takes an integer as input, and returns the number of bits that are equal to one in the binary representation of that number. You can guarantee that input is non-negative.

Example: The binary representation of 1234 is 10011010010, so the function should return 5 in this case

My Solution:

var countBits = function(n) {
  // set counter
  let counter = 0;
  
  while(true) {
    let share = parseInt(n/2);
    let reminder = n % 2;
     n = share;
    
    // add only if reminder is 1
    if(reminder == 1) {
      counter++;
    }
    if(n == 0) {
      break;
    }
  }
  return counter;
};
  • parseInt(string, radix)

    주어진 문자열을 숫자로 주어진 진법에 따라 변환한다. radix를 항상 명시해주자.

    • 문자열 타입의 실수 값은 정수값만 리턴한다.
parseInt("111",2); // 7

Best Solutions:

function countBits(n) {
  for(c=0;n;n>>=1)c+=n&1
  return c;
}

주어진 조건을 만족하는 동안에 n의 1의 자리가 1이면 c에 1을 더하고 0이면 0을 더한다. 처음 시행 이후에 n을 오른쪽으로 한자리씩 밀어서 다음자리를 또 비교한다.

countBits = n => n.toString(2).split('0').join('').length;
  • toString()

    숫자 타입을 문자 타입으로 변경

  • split('0')
    0을 기준으로 문자열을 쪼개서 배열로 저장한다.

  • join()
    배열의 모든 요소를 연결해 하나의 문자열을 만든다.

profile
블록체인 개발자(진)

0개의 댓글