본문 바로가기
IT 공부/JAVA

[코딩테스트] Lv1. 신고결과 받기

by Thinker 2022. 8. 29.
반응형

 

1.문제설명

신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다.

  • 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다.
    • 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다.
    • 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다.
  • k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다.
    • 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다.

입출력 예

["muzi", "frodo", "apeach", "neo"] ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"] 2 [2,1,1,0]
["con", "ryan"] ["ryan con", "ryan con", "ryan con", "ryan con"] 3 [0,0]

 

 

2.코드

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;

class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        HashMap<String, Integer> count = new LinkedHashMap<>();
        HashMap<String, HashSet<String>> last = new HashMap<>();
        int[] answer = new int[id_list.length];
        
        for(int i = 0; i<id_list.length ;i++){
            count.put(id_list[i],i);
            last.put(id_list[i],new HashSet<>());
        }
        
        for (String b: report){
            String[] str = b.split(" ");
            last.get(str[1]).add(str[0]);
        }
        
        for(int i = 0; i<id_list.length ; i++){
            HashSet<String> mail = last.get(id_list[i]);
        if(mail.size()>= k){
            for(String name : mail){
                answer[count.get(name)]++;
                }
            }
        }
        return answer;
        }
        
}

 

반응형

'IT 공부 > JAVA' 카테고리의 다른 글

[코딩테스트] Lv1.최소직사각형  (0) 2022.09.05
[코딩테스트] Lv1.같은 숫자는 싫어  (0) 2022.09.05
[API]equals()  (0) 2021.01.15
[예외]Try-catch-finally  (0) 2021.01.12
[예외]NumberFormatException  (0) 2021.01.12

댓글