본문 바로가기
코딩테스트(알고리즘)/baekjoon

[baekjoon] 2910 빈도정렬 (javascript)

by Cafe Mocha 2023. 1. 12.

2910번: 빈도 정렬 (acmicpc.net)

 

2910번: 빈도 정렬

첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다.

www.acmicpc.net


알고리즘 : 정렬

 

let input = require("fs")
  .readFileSync("input.txt") //"/dev/stdin"
  .toString()
  .split("\n")
  .map((val) => val.trim());

let [n, c] = input
  .shift()
  .split(" ")
  .map((v) => +v);
let arr = input[0].split(" ").map((v) => +v);
function solution() {
  let answer = [];

  let count = [];

  // 카운트, 나온 순서
  for (let i = 0; i < arr.length; i++) {
    if (count.find((v) => v.num === arr[i])) {
      count[count.findIndex((v) => v.num === arr[i])].count++;
    } else {
      count.push({ num: arr[i], count: 1 });
    }
  }
  count.sort((a, b) => b.count - a.count);

  count.forEach((v) => {
    for (let i = 0; i < v.count; i++) {
      answer.push(v.num);
    }
  });
  console.log(answer.join(" "));
}

solution();