잘 모르겠어서 냅다! 무지성으로 풀었다!
reporter
: [신고한 사람 이름(A) - A가 신고한 사람 hashset(중복 방지)] 저장
reported
: [신고 받은 사람 이름(A) - A를 신고한 사람 hashset(중복 방지)] 저장
reporter와 reported를 각자 저장한 후, reported의 hashset.size() >= k
이면 계정 정지
➡️ reporter의 hashset을 가져와서(hashset), reported에서 (hashset)요소를 키로 갖는 value를 가져와서 개수를 셈 reported.get(hashset).size()
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
public class GetReport {
public int[] solution(String[] id_list, String[] report, int k) {
HashMap<String, HashSet<String>> reporter = new HashMap<>();
HashMap<String, HashSet<String>> reported = new HashMap<>();
for (String s : id_list) {
reporter.put(s, new HashSet<>());
reported.put(s, new HashSet<>());
}
for (String r : report) {
String reporterInfo = r.split(" ")[0];
String reportedInfo = r.split(" ")[1];
reporter.get(reporterInfo).add(reportedInfo);
reported.get(reportedInfo).add(reporterInfo);
}
int[] result = new int[id_list.length];
for (int i = 0; i < id_list.length; i++) {
HashSet<String> reporterHashset = reporter.get(id_list[i]);
for (String hashset : reporterHashset) {
if (reported.get(hashset).size() >= k) {
result[i]++;
}
}
}
return result;
}
public static void main(String[] args) {
GetReport getEmail = new GetReport();
System.out.println(Arrays.toString(getEmail.solution(
new String[]{"muzi", "frodo", "apeach", "neo"},
new String[]{"muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"}, 2))); // [2, 1, 1, 0]
System.out.println(Arrays.toString(getEmail.solution(
new String[]{"con", "ryan"},
new String[]{"ryan con", "ryan con", "ryan con", "ryan con"}, 3))); // [0, 0]
}
}