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