본문 바로가기
Beakjoon&프로그래머스/Java

[프로그래머스/Java] 신고 결과 받기

by 현장 2026. 3. 19.

-Code

import java.util.*;

class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        // 아이디에 대한 신고자 정보와 아이디에 대한 인덱스를 맵으로 저장
        Map<String, Set<String>> reportMap = new HashMap<>();
        Map<String, Integer> idIdxMap = new HashMap<>();
        for (int i = 0; i < id_list.length; i++) {
            reportMap.put(id_list[i], new HashSet<>());
            idIdxMap.put(id_list[i], i);
        }
        // 신고자를 target마다 set으로 저장(중복이 없도록)
        for (String reportInfo : report) {
            StringTokenizer st = new StringTokenizer(reportInfo);
            String reporter = st.nextToken();
            String target = st.nextToken();
            Set<String> reportSet = reportMap.get(target);
            reportSet.add(reporter);
            reportMap.put(target, reportSet);
        }
        // 정지가 당한 id확인 및 정지이면 각 신고자의 값 1씩 증가
        int[] answer = new int[id_list.length];
        for (String target : reportMap.keySet()) {
            Set<String> reporters = reportMap.get(target);
            if (reporters.size() >= k) {
                for (String reporter : reporters) {
                    answer[idIdxMap.get(reporter)]++;
                }
            }
        }
        return answer;
    }
}