Contents
내가 작성한 코드

내가 작성한 코드
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
Set<String> reportSet = new HashSet<>(Arrays.asList(report)); // 신고 목록 중복 제거
Map<String, Integer> reportedCount = new HashMap<>(); // 신고 당한 수 저장 맵
Map<String, List<String>> reporterMap = new HashMap<>(); // 신고자와 신고한 대상
for (String rep : reportSet) {
String[] parts = rep.split(" ");
String reporter = parts[0];
String ban = parts[1];
// target 신고 횟수 증가
reportedCount.put(ban, reportedCount.getOrDefault(ban, 0) + 1);
// reporter가 신고한 대상 리스트에 추가
reporterMap.computeIfAbsent(reporter, v -> new ArrayList<>()).add(ban);
}
Set<String> banned = new HashSet<>(); // 정지당한 유저
for (String id : reportedCount.keySet()) {
if (reportedCount.get(id) >= k) {
banned.add(id);
}
}
// 신고한 사람 중 몇 명 정지당했는지 확인
for (int i = 0; i < id_list.length; i++) {
String user = id_list[i];
List<String> reported = reporterMap.getOrDefault(user, new ArrayList<>());
for (String target : reported) {
if (banned.contains(target)) {
answer[i]++;
}
}
}
return answer;
}
}
map.computeIfAbsent(key, k -> new ArrayList<>());
Map
에 키가 없을 때, 해당 키에 초기값을 생성하여 넣고, 그 값을 리턴
map.computeIfAbsent(key, k -> 초기값);
key
: 찾고자 하는 키k -> 초기값
: 키가 없을 경우 실행할 함수 (보통 new ArrayList<>()
, new HashSet<>()
등)Map<String, List<String>> map = new HashMap<>();
map.computeIfAbsent("muzi", k -> new ArrayList<>()).add("frodo");
map.computeIfAbsent("muzi", k -> new ArrayList<>()).add("neo");
map = {
"muzi": ["frodo", "neo"]
}
Share article