(C++) 백준 1713 후보 추천하기

mnaz·2021년 11월 8일
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

typedef struct frame {
    int num;
    int cnt;
    int order;
} frame;

frame frames[22];

int main(){

    int N, M;
    cin>>N>>M;

    int tmp;

    for(int i=0; i<M; i++){
        cin>>tmp;

        bool check = false;
        for(int j=0; j<N; j++){

            if(frames[j].num==tmp) {
                frames[j].cnt++;
                check=true;
                break;
            }

            if(frames[j].num==0) {
                frames[j].num=tmp;
                frames[j].cnt++;
                frames[j].order=i;
                check=true;
                break;
            }
        }

        if(!check){
            int idx=0;
            for(int j=1; j<N; j++){
                if(frames[idx].cnt == frames[j].cnt) {
                    if(frames[idx].order>frames[j].order) idx = j;
                }
                else if(frames[idx].cnt>frames[j].cnt) idx=j;
            }

            frames[idx].cnt=1;
            frames[idx].num=tmp;
            frames[idx].order=i;
        }

    }

    vector<int> v;
    for(int i=0; i<N; i++){
        v.push_back(frames[i].num);
    }

    sort(v.begin(), v.end());

    for(int i=0; i<N; i++){
        if(v[i]==0) continue;
        cout<<v[i]<<" ";
    }
}

0개의 댓글