백준 2910 주파수 정렬.
백준의 “주파수 정렬” 문제인 2910번에 대한 자세한 내용은 기사 하단의 문제 링크를 참조하세요.

문제 2910에 대한 입력 및 예
입력:
5 2
2 1 2 1 2
인쇄:
2 2 2 1 1
암호
백준 “주파수 정렬” 문제 2910번 코드입니다.
#include <bits/stdc++.h>
using namespace std;
map<int, int> mp,mc;
bool cmp(pair<int,int> a,pair<int,int> b){
if(a.first==b.first){
return mc(a.second)< mc(b.second);
}
return a.first>b.first;
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(0);cout.tie(0);
vector<pair<int,int>> p;
int n,c,x;
cin>>n>>c;
for(int i=0;i<n;i++){
cin>>x;
mp(x)++;
if(mc(x)==0)//map은 할당 안된값 0으로 초기화되어있음.
mc(x)=i+1;
}
for(auto v:mp)
p.push_back({v.second,v.first});
sort(p.begin(),p.end(),cmp);
for(auto v: p){
for(int i=0;i<v.first;i++)
cout<<v.second<<" ";
}
return 0;
}
실행
예제의 입력으로 위의 코드를 실행했을 때의 결과입니다.
https://www.acmicpc.net/problem/2910
2910번: 주파수 정렬
첫 번째 줄은 메시지의 길이 N과 C를 제공합니다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 메시지 순서는 두 번째 줄에 표시됩니다.
www.acmicpc.net