using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static List<int> FilterByFrequency(List<int> list, int k) {
// Count occurrences of each number
var counts = list
.GroupBy(x => x)
.ToDictionary(g => g.Key, g => g.Count());
// Keep only elements that appear at least k times
return list
.Where(x => counts[x] >= k)
.ToList();
}
static void Main()
{
var lst = new List<int>
{
1, 2, 2, 3, 3, 3, 4, 4, 4, 4,
5, 5, 6, 7, 7, 7, 7, 8, 8, 8
};
int k = 3;
var result = FilterByFrequency(lst, k);
Console.WriteLine(string.Join(", ", result));
}
}
/*
run:
3, 3, 3, 4, 4, 4, 4, 7, 7, 7, 7, 8, 8, 8
*/