자바 - 신고 결과 받기

Workwork·2022년 5월 15일
0

Conding Test Training

목록 보기
1/1
import java.util.HashMap;
import java.util.HashSet;

class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
HashMap<String, String> userMap = new HashMap<String, String>();    // 신고자가 그동안 신고한 아이디들
        HashMap<String, HashSet<String>> stopMap = new HashMap<>();  // 신고대상들의 신고먹은 횟수


// report를 분리해서 reportSplit 배열에 넣기
        for (int i = 0; i < report.length; i++) {
            String[] reportSplit = report[i].split(" ");

            // 신고 받은 아이디를 신고한 사람들(reportSplit의 1번 인덱스) HashSet 생성
            HashSet<String> userSet = new HashSet<String>();
            if(stopMap.containsKey(reportSplit[1])) {
                userSet = stopMap.get(reportSplit[1]);
            }

            userSet.add(reportSplit[0]);
            stopMap.put(reportSplit[1], userSet);
        }

        // 정지된 계정 찾기
        int[] result = new int[id_list.length];

        for(String i : stopMap.keySet()) {
            if(stopMap.get(i).size() >= k) {

                // 메일 보내기
                for (int j = 0; j < id_list.length; j++) {
                    if(stopMap.get(i).contains(id_list[j])) {
                        result[j]++;
                    }
                }
            }
        }

        return result;
    }
}
import java.util.HashMap;
import java.util.HashSet;

class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        HashMap<String, HashSet<String>> stopMap = new HashMap<>();  	// 신고 받은 사람(key) - 신고 한 사람(value)
        HashSet<String> userSet = new HashSet<String>();	 // 신고 메일 받을 사람들(reportSplit의 1번 인덱스) HashSet 생성


        // 1. report를 분리해서 reportSplit 배열에 넣기
        for (int i = 0; i < report.length; i++) {
            String[] reportSplit = report[i].split(" ");

            
            if(stopMap.containsKey(reportSplit[1])) {	// 정지 맵에 신고 받은 자가 이미 있다면
                userSet = stopMap.get(reportSplit[1]);  // 해당 자를 신고한 사람들을(value, set)을 가져와 userSet에 넣는다.
            }

            userSet.add(reportSplit[0]);	// userSet에 신고자 추가(set이기 때문에 이미 신고자가 존재할 경우 중복 제거될 것)
            stopMap.put(reportSplit[1], userSet);	// stopMap에 신고받은자, 신고자 추가
        }

        // 정지된 계정 찾기
        int[] result = new int[id_list.length]; // 아이디 배열과 동일한 개수, 메일 받는 횟수
        
        for(String i : stopMap.keySet()) {
            if(stopMap.get(i).size() >= k) {	// stopMap을 차례대로 돌면서 k이상의 사이즈를 가진 value(신고자 set)가 있을 경우 메일 횟수 추가

                // 메일 보내기
                for (int j = 0; j < id_list.length; j++) {
                    if(stopMap.get(i).contains(id_list[j])) {
                        result[j]++;
                    }
                }
            }
        }

        return result;
    }
}
profile
나만 알아보면 된다는 마음으로 작더라도 조금씩

0개의 댓글

Powered by GraphCDN, the GraphQL CDN