[JAVA 문제 풀이] 329. 신고 결과 받기

프로그래머스 (92334)
Stupefyee's avatar
Jun 19, 2025
[JAVA 문제 풀이] 329. 신고 결과 받기
notion image
notion image
 

내가 작성한 코드

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

stupefyee