Published:
Updated:

  • Reference
  • 진짜 파이썬으로 빨리 갈아타자 ㅋㅋㅋㅋ
    • 특히 Map 쓰는 파트에서는 더 지옥이다 자바는 🙃


Solution

package programmers.sully.week5;

import java.util.*;

public class 신고_결과_받기_Sully {
    public static int[] solution(String[] id_list, String[] report, int k) {
        int[] answer = new int[id_list.length];

        Map<String, Integer> reportCntMap = new HashMap<>();
        Map<String, Set<String>> reportMap = new HashMap<>();

        int index = 0;
        for (String id : id_list) {
            reportCntMap.put(id, index++);
            reportMap.put(id, new LinkedHashSet<>());
        }

        for (String rp : report) {
            String userID = rp.split(" ")[0];
            String reportID = rp.split(" ")[1];
            reportMap.get(reportID).add(userID);

//            if (!reportMap.get(userID).contains(rp)) {
//                int beforeCnt = reportCntMap.get(reportID);
//                reportCntMap.put(reportID, beforeCnt + 1);
//
//                reportMap.get(userID).add(reportID); // 중복되지 않게 집합 넣어줌
//            }
        }

//        // k 이상 신고 당하면 정지 -> reportCntMap(Value) >= k
//        Set<String> reportSet = new LinkedHashSet<>();
//        for (Map.Entry<String, Integer> entry : reportCntMap.entrySet()) {
//            if (entry.getValue() >= k) {
//                reportSet.add(entry.getKey());
//            }
//        }
//        System.out.println("reportSet = " + reportSet);
//
//        // reportMap(Value)를 id_list 순서에 따라 answer 배열에 저장
//        // reportSet -> reportMap 존재 여부
//        for (String rps : reportSet) { // 2번 이상 신고당한 ID 집합
//            for (int i = 0; i < id_list.length; i++) { // 유저 ID 집합
//                if (reportMap.get(id_list[i]).contains(rps)) {
//                    answer[i] += 1;
//                }
//            }
//        }

        for (String id : id_list) {
            Set<String> set = reportMap.get(id);
            if (set.size() >= k) {
                for (String s : set) {
                    answer[reportCntMap.get(s)] += 1;
                }
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        System.out.println(Arrays.toString(
                solution(
                        new String[]{"muzi", "frodo", "apeach", "neo"},
                        new String[]{"muzi frodo", "apeach frodo", "frodo neo", "muzi neo", "apeach muzi"},
                        2
                )));
    }
}

Leave a comment