import java.util.*;
class Solution {
public Collection<Integer> solution(String[] id_list, String[] report, int k) {
// 유저 ID 순서가 필요해서 LinkedHashMap 사용
Map<String, Integer> map1 = new LinkedHashMap<>();
Map<String, Integer> map2 = new LinkedHashMap<>();
// 정지된 ID 저장할 List
List<String> list = new ArrayList<>();
// 중복 제거를 위해 report를 map1에 저장
// (Map에서 Key는 중복 불가)
for(String key : report) {
map1.put(key, 0);
}
// id_list를 map2에 저장
for(String key : id_list) {
map2.put(key, 0);
}
// 신고 횟수 카운트
for (String key : map1.keySet()) {
String user = key.split(" ")[1];
if (map2.containsKey(user)) {
map2.put(user, map2.getOrDefault(user, 0) + 1);
}
}
// 정지 기준 횟수(k) 이상인 인원 list에 저장
for (String key : map2.keySet()) {
if (map2.get(key) >= k) {
list.add(key);
}
}
// 위에서 사용했기 때문에 0으로 초기화
for(String key : id_list) {
map2.put(key, 0);
}
// 메일 받을 횟수 카운트
for(String key : map1.keySet()) {
String reportedUser = key.split(" ")[1];
String reporter = key.split(" ")[0];
if (list.contains(reportedUser)) {
map2.put(reporter, map2.getOrDefault(reporter, 0) + 1);
}
}
return map2.values();
}
}