본문 바로가기
Algorithm/C++

[백준 2910] 빈도 정렬

by imagineer_jinny 2022. 10. 4.

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

 

2910번: 빈도 정렬

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

www.acmicpc.net

 

 

배운것

stable sort 사용 + bool check 사용

 

 

정답 코드

#include <bits/stdc++.h>
using namespace std;

#define X first
#define Y second

bool cmp(const pair<int, int> &a, const pair<int, int> &b) {
    return a.first>b.first;
}

int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, c;
  cin >> n >> c;
  vector<pair<int, int>> arr; // pair : {cnt, num}
    
  for(int i=0;i<n;i++)
  {
      int num;
      cin>>num;
      
      bool ck=false;
      
      for(auto &i : arr)
      {
          if(i.second==num)
          {
              ck=true;
              i.first++;
              break;
          }
      }
      
      if(!ck)arr.push_back({1,num});
      
  }
   stable_sort(arr.begin(), arr.end(), cmp);
    
    for (auto b : arr)
        while (b.first--) cout << b.second << ' ';
}

'Algorithm > C++' 카테고리의 다른 글

[넥토리얼 2기] 코테 4시간  (0) 2022.10.07
[백준 11659] 구간 합 구하기 4  (0) 2022.10.05
[백준 7795] 먹을 것인가 먹힐 것인가  (0) 2022.10.04
[백준 11656] 접미사 배열  (0) 2022.10.04
[백준 10814] 나이순 정렬  (0) 2022.10.04

댓글