🔗 신고 결과 받기
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
// 한 번에 한 번 신고, 신고 횟수는 무제한
// 한 유저에 여러 번 신고 해도 신고 횟수는 1회로 처리
// k번 이상 신고된 유저는 이용 정지 -> 신고한 유젛에게 정지 사실을 알림
// id_ list : 이용자의 ID
// report : 각 이용자가 신고한 이용자의 ID정보 ("신고자 신고당한이용자")
// k : 정지 기준
List<Integer> result=new ArrayList<>();
// 신고자 id , 신고한 사람 list
Map<String,List<String>> reporter= new HashMap<>();
// 신고당한 사람 id , 신고당한 횟수
Map<String, Integer> reported= new HashMap<>();
for(int i=0;i<report.length;i++){
String[] r=report[i].split(" ");
// 신고자 map의 value 값 초기화
if(!reporter.containsKey(r[0])){
reporter.put(r[0],new ArrayList<>());
}
// 아직 신고 안 했다면
if(!reporter.get(r[0]).contains(r[1])){
// 신고하고
reporter.get(r[0]).add(r[1]);
// 횟수 업데이트
reported.put(r[1],reported.getOrDefault(r[1],0)+1);
}
}
for(String id : id_list){
int cnt=0;
if(!reporter.containsKey(id)){
result.add(0);
continue;
}
// 해당 사용자가 신고한 신고자 list
List<String> reportedUsers=reporter.get(id);
for(String reportedUser:reportedUsers){
// k 번 이상 신고 당했다면
if(reported.get(reportedUser)>=k){
cnt++;
}
}
result.add(cnt);
}
return result.stream().mapToInt(Integer:: intValue).toArray();
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[ LeetCode ] #785 : Is Graph Bipartite? - JAVA (0) | 2025.05.03 |
---|---|
[ 프로그래머스 ] #72411 : 메뉴 리뉴얼 - JAVA (0) | 2025.05.02 |
[ 프로그래머스 ] #42579 : 베스트앨범 - JAVA (0) | 2025.04.29 |
[ 프로그래머스 ] #42888 : 오픈채팅방 - JAVA (1) | 2025.04.28 |
[ 프로그래머스 ] #43162 : 네트워크 - JAVA (0) | 2025.04.25 |