반응형
문제분석
문제목표: 신고 건수를 처리하여, 신고한사람에게 몇건의 처리 결과 메일을 보내야하는지 구하시오.
제일 첫번째로 해야할 일은, K번 신고당한 사람이 누구인지를 알아야합니다.
그래야지, 신고한 사람에게 처리결과 메일을 보낼수 있게되니깐요.
K번 신고당한 사람이 누구인지 만 찾으면 안됩니다.
그 이유는, 저희 목표가 신고당한 사람을 신고한 사람을 찾아 메일을 보내는게 목표입니다.
따라서, 신고당한 사람마다 하나의 신고한사람의 리스트를 가져야할 필요가있습니다.
->사람: 신고한 리스트 = 1: 1
즉, Map을 사용할 필요가있습니다.
Key : User Value: 유저를 신고한 사람들
두번째로 해야할 일은, 신고를 처리해야합니다.
신고리스트 report[]를 돌리면서, 신고자와, 신고당한자를 문자열정리를 한뒤에,
Map을 갱신해 주셔야합니다.
여기서 갱신할때 한 신고자가 같은 유저를 여러번 신고할수없기에, 조건문을 하나 추가해주서야합니다.
세번째로 해야할 일은, K번 신고당한 사람을 찾은뒤 신고한 사람에게 메일을 보내야합니다.
모든 map을 돈뒤, K번 신고당한사람을 조사한뒤, 신고한 사람에게 메일 카운트를 1 증가시킵니다.
필자는 새로운 mail_map을 생성하여, Key : user Value: count 로 저장을했습니다.
마지막으로, 입력받은 id_list 순서대로 보낼 메일 카운트를 출력하면 됩니다.
문제풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
Map<String,List<String>> map= new HashMap<>();
Map<String,Integer> mail_map = new HashMap<>();
// 모든 유저에 대해 신고자리스트를 생성
// Key: 유저, Value: 유저를 신고한 사람들
for(String user: id_list){
List<String> list = new LinkedList<>();
map.put(user,list);
mail_map.put(user,0);
}
// 신고자: attacker 신고당한자 : defender
// 신고당한 건수를 처리함
for(String temp: report){
String[] arr=temp.split(" ");
String attacker=arr[0];
String defender=arr[1];
List<String> list =map.get(defender);
//중복신고를 막음
if(list.contains(attacker)){
continue;
}
list.add(attacker);
map.put(defender,list);
}
// K번 신고당한 사람을 찾고, 신고한 사람들에게 Count증가
for(String data: map.keySet()){
List<String> list =map.get(data);
if(list.size()>=k){
for(String user: list){
int count =mail_map.get(user)+1;
mail_map.put(user,count);
}
}
}
int i=0;
int[] answer = new int[id_list.length];
for(String data: id_list){
answer[i]= mail_map.get(data);
i++;
}
return answer;
}
}
|
cs |
반응형
'알고리즘 > 프로그래머스 Level1' 카테고리의 다른 글
프로그래머스 [JAVA] Level1: 숫자 짝꿍 (1) | 2022.10.08 |
---|---|
[프로그래머스, Java] Level1: 성격 유형 검사하기 (0) | 2022.08.20 |
[프로그래머스,Java] Level1: 나머지가 1이되는 수 찾기 (0) | 2021.10.14 |
[프로그래머스,자바] Level1: 최소직사각형 (위클리 8주차) (2) | 2021.10.03 |
[프로그래머스,Java] Level1:크레인 인형뽑기 (0) | 2021.09.21 |