Java/Algorithm

[Algorithm] Programmers 신고 결과 받기 풀이

Jeong Jeon
반응형

문제 : https://programmers.co.kr/learn/courses/30/lessons/92334?language=java 

 

코딩테스트 연습 - 신고 결과 받기

문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의

programmers.co.kr

 

해설 : 우선 중복된 신고는 없다 라는것에 Set을 생각해서 넣어두고 사용했다

혹자는 stream에 distinct를 사용해서 중복을 제거햇던데... ㄷㄷ.. 열심히 배워보자..

 

1). 나를 신고한 사람을 Set에 담아두고 나를 신고한 사람이 k명 이상일때 신고한 사람에게 메세지를 보내는것으로 작성하였다.

 

풀이 :

import java.util.*;
class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        int[] answer = new int[id_list.length];
        
        HashMap<String, HashSet<String>> idMap = new HashMap<>();
        HashMap<String,Integer> idxMap = new HashMap<>();
    
        for(int i=0; i<id_list.length; i++){
            idMap.put(id_list[i],new HashSet<>());
            idxMap.put(id_list[i],i);
        }
        
        for(String reportDetail : report){
            String from = reportDetail.split(" ")[0];
            String to = reportDetail.split(" ")[1];
            idMap.get(to).add(from);
        }
        
        for(int i=0; i<id_list.length; i++){
            HashSet<String> set = idMap.get(id_list[i]);
            if(set.size() >= k){
                for(String id : set){
                    answer[idxMap.get(id)]++;
                }
            }
        }
        
        return answer;
    }
}
반응형