알고리즘/줄울림 여름방학 알고리즘 스터디
[BOJ/C++] 1713 후보 추천하기
햄스타배
2025. 11. 27. 21:02

https://www.acmicpc.net/problem/1713
#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;
int n, t;
int total[101] ={0,};
vector<int> gallery;
void insert(int st){
gallery.push_back(st);
total[st]++;
}
int main(){
cin >> n;
cin >> t;
while(t--){
int st; cin >> st;
if(find(gallery.begin(), gallery.end(), st) != gallery.end()){
// 갤러리에 있는 후보면 추천수만 증가
total[st]++;
}else{
int total_min = 1001; int total_i = -1;
if(gallery.size()>=n) {
// 갤러리에 있는 원소중 추천수 제일 작은거 찾기
for(int i=0; i<gallery.size(); i++){
int k = gallery[i];
if(total[k]<total_min){
total_min = total[k];
total_i = i;
}
}
total[gallery[total_i]] = 0;
gallery.erase(gallery.begin() + total_i); //삭제
}
insert(st);
}
// for (int x : gallery) {
// cout << x << " ";
// }
// cout <<"\n";
}
sort(gallery.rbegin(), gallery.rend());
while(!gallery.empty()){
cout << gallery.back() << " ";
gallery.pop_back();
}
}
갤러리에 전시된 학생의 번호를 vector로 저장하고 push_back을 사용해서 자동으로 게시일 순으로 저장되게 하였다. 또한 학생에 대한 추천수를 모두 저장하는 total 배열을 만들어 추천수를 저장하여 바로 인덱스 접근이 가능하도록 하였다.