티스토리 뷰

https://www.acmicpc.net/problem/2910

 

2910번: 빈도 정렬

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

www.acmicpc.net

const fs = require('fs');
const input = fs.readFileSync("./dev/stdin").toString().trim().split('\n');

const [N, C] = input[0].split(' ').map(Number);
const num = input[1].split(' ');
const answer = [];
let frequency = {}

num.forEach((v, i) => {
  if (frequency[v]) {
    frequency[v].cnt++;
  } else {
    frequency[v] = {}
    frequency[v].cnt = 1;
    frequency[v].index = i;
  }
})
const arr = Object.entries(frequency).sort((a, b) => {
  if (a[1].cnt < b[1].cnt) {
    return 1;
  } else if (a[1].cnt > b[1].cnt) {
    return -1;
  } else {
    return a[1].index - b[1].index
  }
});

arr.forEach(v => {
  for (let i = 0; i < v[1].cnt; i++) {
    answer.push(v[0]);
  }
})
console.log(answer.join(' '))
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함