- toc {:toc}
λ¬Έμ νμΈνκΈ°
1713: ν보 μΆμ²νκΈ° λ¬Έμ νμΈνκΈ°
νμ΄
μ΄ λ¬Έμ μμ νμ΄μΌ ν μ§μ μ 3λ²μ΄λ€.
- λΉμ΄μλ μ¬μ§νμ΄ μλ κ²½μ°μλ νμ¬κΉμ§ μΆμ² λ°μ νμκ° κ°μ₯ μ μ νμμ μ¬μ§μ μμ νκ³ , κ·Έ μ리μ μλ‘κ² μΆμ²λ°μ νμμ μ¬μ§μ κ²μνλ€. μ΄λ, νμ¬κΉμ§ μΆμ² λ°μ νμκ° κ°μ₯ μ μ νμμ΄ λ λͺ μ΄μμΌ κ²½μ°μλ κ·Έλ¬ν νμλ€ μ€ κ²μλ μ§ κ°μ₯ μ€λλ μ¬μ§μ μμ νλ€.
- λΉμ΄μλ μ¬μ§νμ΄ μλ κ²½μ° μΆμ² μκ° κ°μ₯ μ μ νμμ μ°Ύλ μκ³ λ¦¬μ¦
- μΆμ² μκ° λμΌν κ²½μ° κ°μ₯ μ€λλ νμ μ ν
recommend λ°°μ΄μ μΆμ² νμλ₯Ό μΈλ λ°°μ΄, check λ°°μ΄μμ νμμ΄ μ¬μ§νμ λ½ν κ²½μ°λ₯Ό νμΈν λΏλ§ μλλΌ oldλ₯Ό μ¬μ©ν΄μ μ€λλ μμλ₯Ό λνλΈλ€.
μ΄ λΆλΆ ꡬνμ΄ λμλ€λ©΄ λλ¨Έμ§ λΆλΆμ λ¬Έμ κ·Έλλ‘ νμ΄νλ©΄ λλ€.
λ€λ§, μ¬μ§νμ μλ νμμ΄ μΆμ²λ°μμ λ oldλ κ°±μ λμ§ μλλ€.
#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
int recommend[105]; // μΆμ² νμ
int check[105]; // μ¬μ§νμ λ€μ΄μλμ§ μ¬λΆ 체ν¬
vector<int> frame;
int main(){
ios::sync_with_stdio(true);
cin.tie(0); cout.tie(0);
int N, size, num, old = 0;
check[104] = 99999;
cin >> N;
size = N;
cin >> N;
for(int i = 0; i < N; i++){
cin >> num;
old++;
// Frameμ΄ μ±μμ Έ μλ μνμμ μλ‘μ΄ νλ³΄κ° λ€μ΄μ¨ κ²½μ°
if (frame.size() == size && !check[num-1]){
int idx = -1;
pair<int, int> min = {104, 99999};
for (int k=0; k<frame.size(); k++){
int n = frame[k];
// νμ¬κΉμ§ μΆμ²μκ° κ°μ₯ μ μ νμ μΆμΆ
if (min.Y > recommend[n-1]) {
idx = k;
min.X = n;
min.Y = recommend[n-1];
}
// μΆμ²μκ° λμΌν λ μ€λλ νμ μΆμΆ
else if (min.Y == recommend[n-1]){
if (check[min.X-1] > check[n-1]){
idx = k;
min.X = n;
min.Y = recommend[n-1];
}
}
}
recommend[min.X-1] = 0;
check[min.X-1] = 0;
frame[idx] = num;
recommend[num-1]++;
check[num-1] = old;
}
// μ¬μ§νμ μλ νλ³΄κ° μΆμ²μ λ°μ κ²½μ°
else if (check[num-1]){
recommend[num-1]++;
}
else{
recommend[num-1]++;
check[num-1] = old;
frame.push_back(num);
}
}
sort(frame.begin(), frame.end());
for (int i : frame){
cout << i << " ";
}
return 0;
}