Argorithm
[Programmers]Lv.1 신고 결과 받기
빙응이
2023. 12. 27. 16:52


📝풀이
일단 제일 먼저 생각한 것은
- 메시지를 날리기 위한 신고한 사람 저장하는 자료구조
- 신고 당한 횟수를 저장하는 자료 구조
를 생각하였다.
빠르게 찾고 저장하기 좋은 것을 선택하여야 했는데
메시지를 날리기 위한 신고한 사람 저장하는 것은 해쉬맵 안에 ArrayList를 넣어서 구현하였고
신고 당한 횟수는 그냥 해쉬맵을 사용하였다.
import java.util.ArrayList;
import java.util.HashMap;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
ArrayList<String> report_List;
HashMap<String, Integer> count_Map = new HashMap<>();
HashMap<String, ArrayList<String>> id_Map = new HashMap<>();
int[] answer = new int[id_list.length];
for (String id : id_list) {
id_Map.put(id, new ArrayList<>());
count_Map.put(id, 0);
}
for (String r : report) {
String[] words = r.split(" ");
String reporter = words[0];
String reported = words[1];
ArrayList<String> al = id_Map.get(reporter);
if(!al.contains(reported)){
id_Map.get(reporter).add(reported);
count_Map.put(reported, count_Map.get(reported)+1);
}
}
for(int i = 0; i<answer.length; i++){
ArrayList<String> al = id_Map.get(id_list[i]);
answer[i] = 0;
for(String word : al){
if(count_Map.get(word) >= k){
answer[i]+= 1;
}
}
}
return answer;
}
}
/*
* 1. 메시지를 날리기 위한 신고한 사람 저장
* 2. 신고 당한 횟수를 저장하는 배열 필요
*/