2022 KAKAO BLIND RECRUITMENT - 신고 결과 받기 - JAVA

2025. 3. 3. 20:53백준 및 프로그래머스/프로그래머스 LV 1

문제 설명

 

제한 사항

 

입출력 예

 

문제 설명
1.각각의 캐릭터가 신고하고 신고를 받는 경우입니다.
2.이 과정에서 K 번 이상의 신고를 받은 사람은 정지를 당하게 됩니다.
3.정지를 당하면 정지를 당한 플레이어를 신고한 사람에게 메일을 발송됩니다.
4.과연 각각의 플레이어가 몇 개의 메일을 받는지 저장 후 출력해주면 됩니다.

 

전체 코드

import java.util.*;
import java.lang.*;

class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        int[] answer = new int[id_list.length];
        Map<String, Set<String>> map = new HashMap<>();
        Map<String, Integer> map1 =  new HashMap<>();
        List<Integer> list = new ArrayList<>();
        for(int i = 0; i<id_list.length; i++){
            map.put(id_list[i], new HashSet<String>());
        }
        for(int i = 0; i<report.length; i++){
            String[] name = report[i].split(" ");
            map.get(name[1]).add(name[0]);
        }
        for(int i = 0; i<id_list.length; i++){
            String word = id_list[i];
            if(map.get(word).size()>=k){
                for(String names : map.get(word)){
                    if(map1.get(names) == null){
                        map1.put(names,1);
                    }else{
                        map1.put(names,map1.get(names)+1);
                    }
                }
            }
        }
        // System.out.println(map1);
        for(int i = 0; i<id_list.length; i++){
            if(map1.get(id_list[i]) == null){
                answer[i] = 0;
                continue;
            }
            answer[i] = map1.get(id_list[i]);
        }
        return answer;
    }
}

간단한 구현 문제이며 자료구조를 잘 활용하는지 보는 문제인 것 같습니다.