728x90
반응형
문제
반응형
풀이
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
|
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
HashSet<String> over = new HashSet<String>(Arrays.asList(report)); //중복된 신고 제거
String[] reportNoOver = over.toArray(new String[over.size()]); //배열로 변환
//신고 당한사람이 key, 신고한 사람들을 담은 set가 value
HashMap<String, HashSet<String>> reported = new HashMap<String, HashSet<String>>();
for(int i=0; i<id_list.length; i++) { //먼저 key와 빈 set를 넣음
reported.put(id_list[i], new HashSet<String>());
}
for(int i=0; i<reportNoOver.length; i++) { //신고 당한 사람을 key로 찾아서 set에 신고한사람을 저장
reported.get(reportNoOver[i].split(" ")[1]).add(reportNoOver[i].split(" ")[0]);
}
HashMap<String, Integer> list = new HashMap<String, Integer>(); //answer배열에 저장할때 쓸 단순 매칭 map
for(int i=0; i<id_list.length; i++) {
list.put(id_list[i], i);
}
for (int i = 0; i < id_list.length; i++) {
HashSet<String> send = reported.get(id_list[i]); //i 번째 사람을 신고한 사람들을 저장한 set를 불러옴
if (send.size() >= k) { //그 set의 크기가 k보다 크면
for (String name : send) { //set 안에 들어있는 사람들은 처리결과 메일을 하나씩 받으므로
answer[list.get(name)]++; //+1
}
}
|
cs |
728x90
반응형
'[JAVA] 프로그래머스 스쿨 > JAVA Lv.1' 카테고리의 다른 글
[프로그래머스/Java] Lv.1 숫자 짝꿍 (0) | 2023.01.23 |
---|---|
[프로그래머스/Java] Lv.1 성격 유형 검사하기 (0) | 2023.01.23 |
[프로그래머스/Java] Lv.1 나머지가 1이 되는 수 찾기 (0) | 2023.01.23 |
[프로그래머스/Java] Lv.1 최소직사각형 (0) | 2023.01.22 |
[프로그래머스/Java] Lv.1 없는 숫자 더하기 (0) | 2023.01.22 |