알고리즘 72 - Ones and Zeros

jabae·2021년 11월 1일
0

알고리즘

목록 보기
72/97

Q.

Given an array of ones and zeroes, convert the equivalent binary value to an integer.

Eg: [0, 0, 0, 1] is treated as 0001 which is the binary representation of 1.

Examples:

Testing: [0, 0, 0, 1] ==> 1
Testing: [0, 0, 1, 0] ==> 2
Testing: [0, 1, 0, 1] ==> 5
Testing: [1, 0, 0, 1] ==> 9
Testing: [0, 0, 1, 0] ==> 2
Testing: [0, 1, 1, 0] ==> 6
Testing: [1, 1, 1, 1] ==> 15
Testing: [1, 0, 1, 1] ==> 11

A)

const binaryArrayToNumber = arr => {
  let newArr = arr.reverse();
  
  let sum = 0;
  for (let i = 0; i < newArr.length; i++) {
    if (i === 0 && newArr[i] === 1)
      sum += 1;
    else if (newArr[i] === 1)
      sum += Math.pow(2, i);
    else
      sum += 0;
  }
  return sum;
};

other

나처럼 뒤집은 뒤, 자릿수로 곱하는 방법도 있지만 아래에처럼.reduce()로 누적으로 자릿수를 곱하는 방법도 있다.

const binaryArrayToNumber = arr => {
  return arr.reduce((total, cur) => (total = total * 2 + cur), 0);
}

parseInt()로 2진수를 10진수로 바꾸는 방법도 있다.

const binaryArrayToNumber = arr => parseInt(arr.join(''), 2);
profile
it's me!:)

0개의 댓글