게으른카르

백준 2910 빈도 정렬 C++

C
2023. 4. 12. 17:56

백준 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;
}

실행

위의 코드를 예제의 입력을 넣어 실행했을 때의 결과입니다.

 

반응형

'C' 카테고리의 다른 글

백준 20413 MVP 다이아몬드 (Easy) C++  (1) 2023.04.13
백준 4659 비밀번호 발음하기 C++  (0) 2023.04.12
백준 13701 중복 제거 C++  (0) 2023.04.12
백준 15719 중복된 숫자 C++  (0) 2023.04.12
백준 2828 사과 담기 게임 C++  (0) 2023.04.12

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band