정수 배열을 유일한 인수로 취하는 JavaScript 함수를 작성해야 합니다.
이 함수는 배열에 있는 정수를 이진 표현에 있는 1을 기준으로 오름차순으로 정렬해야 합니다. 2개 이상의 숫자가 2진수에서 1의 개수가 같으면 크기에 따라 오름차순으로 정렬해야 합니다.
예를 들어 -
입력 배열이 -
인 경우const arr = [34, 37, 23, 89, 12, 31, 23, 89];
그러면 출력 배열은 -
가 됩니다.const output = [34, 12, 37, 23, 89, 23, 89, 31];
예시
다음은 코드입니다 -
const arr = [34, 37, 23, 89, 12, 31, 23, 89];
const sortByBinary = (arr = []) => {
const calculateOne = (str = '') => {
let res = 0;
for(let i = 0; i < str.length; i++){
if(str[i] === '1'){
res++;
};
};
return res;
}
const sorter = (a, b) => {
const firstCount = calculateOne((a >>> 0).toString(2));
const secondCount = calculateOne((b >>> 0).toString(2));
return firstCount - secondCount;
};
arr.sort(sorter);
};
sortByBinary(arr);
console.log(arr); 출력
다음은 콘솔 출력입니다 -
[ 34, 12, 37, 23, 89, 23, 89, 31 ]