💡Problem Solving/Programmers

[프로그래머스] 신고 결과 받기 (Java)

gom20 2022. 1. 20. 21:39

문제

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

 

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

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

programmers.co.kr

 

풀이

Level1 쉬운 문제이다.

HashMap 사용하여 쉽게 풀 수 있었다.

 

소스코드

import java.util.*;
class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        int[] answer = new int[id_list.length];
        
        HashMap<String, ArrayList<String>> reportingUsers = new HashMap<String, ArrayList<String>>();
        HashMap<String, Integer> reportedCnt = new HashMap<String, Integer>();
        HashMap<String, Integer> mailCnt = new HashMap<String, Integer>();
        for(String name : id_list){
            reportingUsers.put(name, new ArrayList<String>());
            reportedCnt.put(name, 0);
            mailCnt.put(name, 0);
        }
        for(int i = 0; i < report.length; i++){
            String[] arr = report[i].split(" ");
            String reportingUser = arr[0];
            String reportedUser = arr[1];
            
            if(reportingUsers.get(reportedUser).contains(reportingUser)) continue;
            reportingUsers.get(reportedUser).add(reportingUser);
            reportedCnt.put(reportedUser, reportedCnt.get(reportedUser) + 1);
        }
        
        for(String name : id_list){
            if(reportedCnt.get(name) >= k){
                for(String reportingUser : reportingUsers.get(name)){
                    mailCnt.put(reportingUser, mailCnt.get(reportingUser) + 1);
                }
            }
        }
        
        for(int i = 0; i < id_list.length; i++){
            answer[i] = mailCnt.get(id_list[i]);
        }
        return answer;
    }
}