inblog logo
|
stupefyee
    알고리즘문제풀기

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

    프로그래머스 (92334)
    Stupefyee's avatar
    Stupefyee
    Jun 19, 2025
    [JAVA 문제 풀이] 329. 신고 결과 받기
    Contents
    내가 작성한 코드
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/92334
    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
    Contents
    내가 작성한 코드

    stupefyee

    RSS·Powered by Inblog