# 생각
vector에 pair를 이용하여 입력받은 숫자와 등장하는 숫자의 빈도를 같이 저장해준다
입력 받은 수와 최초 등장횟수 1을 벡터에 push_back 해주고
vector를 체크해 같은 입력이 들어 왔을 경우 등장 횟수를 더해주면 해결할 수 있다
단, 등장하는 횟수가 같다면 먼저 나온 것이 앞에 있어야 하므로 stable_sort를 써준다
# 전체 코드
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, c;
cin >> n >> c;
vector<pair<int, int>> v;
for (int i = 0; i < n; i++)
{
int tmp;
cin >> tmp;
bool flag = false;
for (auto& j : v)
{
if (j.first == tmp)
{
flag = true;
j.second++;
break;
}
}
if (!flag) v.push_back({ tmp, 1 });
}
stable_sort(v.begin(), v.end(), [](const pair<int, int>& lhs, const pair<int, int>& rhs)
{
return lhs.second > rhs.second;
});
for (auto& i : v) while (i.second--) cout << i.first << ' ';
}
https://www.acmicpc.net/problem/2910
2910번: 빈도 정렬
첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다.
www.acmicpc.net
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 10825_국영수 with cpp (0) | 2022.03.01 |
---|---|
[BOJ] 11656_접미사 배열 with cpp (0) | 2022.03.01 |
[BOJ] 1181_단어 정렬 with cpp (0) | 2022.02.28 |
[BOJ] 2751_수 정렬하기 2 with cpp (0) | 2022.02.28 |
[BOJ] 2750_수 정렬하기 with cpp (0) | 2022.02.28 |