[구름톤 챌린지] 이진수 정렬 (JS)

hhkim·2023년 8월 18일
0

Algorithm - JavaScript

목록 보기
106/188
post-thumbnail

풀이 과정

  1. 각 숫자의 2진수를 2차원 배열로 저장: map()
  2. 2진수 변환: Number().toString(2)
  3. 1의 개수 세기: 배열로 변환 후 filter()
  4. 1의 개수 기준으로 내림차순 정렬, 10진수를 기준으로 내림차순 정렬: sort()
  5. K번째 수 출력

코드

const readline = require('readline');
let rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});
let input = [];
rl.on('line', (line) => {
  input.push(line.trim());
  if (input.length === 2) {
    rl.close();
  }
});

rl.on('close', () => {
  const [N, K] = input[0].split(' ').map(Number);
  const arr = input[1]
    .split(' ')
    .map((e) => [
      Number(e),
      [...Number(e).toString(2)].filter((c) => c === '1').length,
    ]);
  arr.sort((a, b) => b[1] - a[1] || b[0] - a[0]);
  console.log(arr[K - 1][0]);
  process.exit();
});

0개의 댓글