반응형
https://programmers.co.kr/learn/courses/30/lessons/92334
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
public class Solution {
public static int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
HashMap<String, Integer> idx = new HashMap();
HashMap<String, Integer> user_report_cnt = new HashMap();
// 0. 동일 유저신고를 제거
Set<String> set = new HashSet(Arrays.asList(report));
String[] report_dup_remove = set.toArray(new String[0]);
// 1. 각 유저ID에 index설정
for(int i=0; i<id_list.length; i++) {
idx.put(id_list[i], i);
user_report_cnt.put(id_list[i], 0);
}
// 2. 유저가 신고한 사람을 관리할 배열
ArrayList[] user_report_list = new ArrayList[id_list.length];
// 2-1. 배열 초기화
for(int i=0; i<id_list.length; i++) {
user_report_list[i] = new ArrayList();
}
// 3. report 배열을 돌면서 유저가 신고한 사람들을 업데이트
// 4. 신고당한 횟수 증가
for(int i=0; i<report_dup_remove.length; i++) {
String[] str_arr = report_dup_remove[i].split(" ");
String user = str_arr[0];
String reported_user = str_arr[1];
// 유저가 신고한사람 업데이트
user_report_list[idx.get(user)].add(reported_user);
// 신고당한 횟수 1 증가
int cnt = user_report_cnt.get(reported_user);
user_report_cnt.put(reported_user, cnt+1);
}
// for(int i=0; i<user_report_list.length; i++) {
// System.out.println(id_list[i] + "가 신고한사람들 : " + user_report_list[i]);
// }
// for(int i=0; i<user_report_cnt.size(); i++) {
// System.out.println(id_list[i] + "가 신고당한 횟수 : " + user_report_cnt.get(id_list[i]));
// }
ArrayList<String> k_up_reported_user = new ArrayList();
// k 이상 신고당한 사람 구하기
for(int i=0; i<id_list.length; i++) {
if(user_report_cnt.get(id_list[i]) >= k) {
k_up_reported_user.add(id_list[i]);
}
}
// 정답구하기 => 유저가 신고했던 사람들중에 k번이상 신고당한사람이 몇명있나?
for(int i=0; i<id_list.length; i++) {
int cnt = 0;
for(int j=0; j<k_up_reported_user.size(); j++) {
if(user_report_list[i].contains(k_up_reported_user.get(j))) cnt+=1;
}
answer[i]=cnt;
}
// System.out.println(Arrays.toString(answer));
return answer;
}
}
반응형
'알고리즘 > 카카오' 카테고리의 다른 글
2021 KAKAO BLIND RECRUITMENT - 메뉴 리뉴얼 (0) | 2022.02.13 |
---|---|
2021 KAKAO BLIND RECRUITMENT - 순위 검색 (0) | 2022.02.01 |
Summer/Winter Coding(~2018) - 스킬트리 (0) | 2020.09.24 |
2018 KAKAO BLIND RECRUITMENT - [3차] n진수 게임 (0) | 2020.09.18 |
2020 카카오 인턴십수식 - 최대화 (0) | 2020.09.15 |