binaryArrToNum.js (7kyu 23)

Codewars 알고리즘 풀이


Problem

  • Given an array of one’s and zero’s convert the equivalent binary value to an integer.
    • 주어진 0과 1의 2진 값 배열을 정수로 변환한다.
  • [0, 0, 0, 1] is treated as 0001 which is the binary representation of 1.
    • [0, 0, 0, 1]을 1의 2진 표현인 0001로 간주한다.


Solution 01

function binaryArrToNum(arr) {
   return parseInt(arr.join(''), 2);
}

binaryArrToNum([0, 0, 0, 0]);  // 0
binaryArrToNum([0, 0, 0, 1]);  // 1
binaryArrToNum([0, 0, 1, 0]);  // 2
binaryArrToNum([0, 0, 1, 1]);  // 3
binaryArrToNum([0, 1, 0, 0]);  // 4
binaryArrToNum([0, 1, 0, 1]);  // 5
binaryArrToNum([0, 1, 1, 0]);  // 6
binaryArrToNum([0, 1, 1, 1]);  // 7
binaryArrToNum([1, 0, 0, 0]);  // 8
binaryArrToNum([1, 0, 0, 1]);  // 9
binaryArrToNum([1, 0, 1, 0]);  // 10

parseInt(): 문자열을 구문 분석하고, 정수를 반환한다.

join(): 배열의 모든 element를 결합하고, 새 문자열로 반환한다.


Solution 02

function binaryArrToNum(arr) {
   const array = [8, 4, 2, 1];
   let sum = 0;
   
   for (let i = 0; i < arr.length; i++) {
      sum += arr[i] * array[i];
   }
   return sum;
}

binaryArrToNum([0, 0, 0, 0]);  // 0
binaryArrToNum([0, 0, 0, 1]);  // 1
binaryArrToNum([0, 0, 1, 0]);  // 2
binaryArrToNum([0, 0, 1, 1]);  // 3
binaryArrToNum([0, 1, 0, 0]);  // 4
binaryArrToNum([0, 1, 0, 1]);  // 5
binaryArrToNum([0, 1, 1, 0]);  // 6
binaryArrToNum([0, 1, 1, 1]);  // 7
binaryArrToNum([1, 0, 0, 0]);  // 8
binaryArrToNum([1, 0, 0, 1]);  // 9
binaryArrToNum([1, 0, 1, 0]);  // 10


Solution 03

function binaryArrToNum(arr) {
   return Number(`0b${arr[0]}${arr[1]}${arr[2]}${arr[3]}`);
}

binaryArrToNum([0, 0, 0, 0]);  // 0
binaryArrToNum([0, 0, 0, 1]);  // 1
binaryArrToNum([0, 0, 1, 0]);  // 2
binaryArrToNum([0, 0, 1, 1]);  // 3
binaryArrToNum([0, 1, 0, 0]);  // 4
binaryArrToNum([0, 1, 0, 1]);  // 5
binaryArrToNum([0, 1, 1, 0]);  // 6
binaryArrToNum([0, 1, 1, 1]);  // 7
binaryArrToNum([1, 0, 0, 0]);  // 8
binaryArrToNum([1, 0, 0, 1]);  // 9
binaryArrToNum([1, 0, 1, 0]);  // 10