public class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
LinkedHashMap<String, ArrayList<String>> reportlist = new LinkedHashMap<>(); // 유저 : 신고한 유저 목록
LinkedHashMap<String, Integer> cnt = new LinkedHashMap<>(); // 유저 : 신고 당한 횟수
// 맵 초기화
for(int i = 0; i < id_list.length; i++) {
ArrayList<String> arr = new ArrayList<>();
reportlist.put(id_list[i], arr);
cnt.put(id_list[i], 0);
}
for(int i = 0; i < report.length; i++) {
String[] id = report[i].split("\\s");
String str1 = id[0]; // 신고 한 사람
String str2 = id[1]; // 신고 당한 사람
ArrayList<String> arr = reportlist.get(str1);
if(!arr.contains(str2)) { // 이전에 신고한 적 없는 경우에만 추가
arr.add(str2);
cnt.put(str2, cnt.get(str2) + 1);
}
}
int userIdx = 0;
for(String key : reportlist.keySet()){
ArrayList<String> arr = reportlist.get(key); // key: 유저, arr: key가 신고한 사람 목록
for(int i = 0; i < arr.size(); i++) {
String id = arr.get(i);
if(cnt.get(id) >= k) { // 신고 당한 횟수가 k 번 이상인 경우
answer[userIdx]++;
}
}
userIdx++;
}
return answer;
}
}