import java.util.Map;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
class Solution {
Map<String, Set<String>> map = new HashMap<>();
Map<String, Integer> idListIndex= new HashMap<>();
int[] stopUser;
int[] answer;
public int[] solution(String[] id_list, String[] report, int k) {
int point = id_list.length;
answer = new int[point];
for(int i=0; i<point;i++){
idListIndex.put(id_list[i], i);
}
inReport(report);
stopUserResult(point, k,id_list);
return answer;
}
private void stopUserResult(int point, int k, String[] id_list){
stopUser = new int[point];
for(String s: map.keySet()){
Set<String> str = map.get(s);
stopUser[idListIndex.get(s)] = str.size();
}
for(int i=0; i<stopUser.length;i++){
if(stopUser[i] >= k){
Set<String> value = map.get(id_list[i]);
for(String str: value){
answer[idListIndex.get(str)]++;
}
}
}
}
private void inReport(String[] report){
for(int i=0; i <report.length;i++ ){
String[] strSplit = report[i].split(" ");
if(map.get(strSplit[1]) == null){
map.put(strSplit[1], new HashSet<String>()) ;
}
Set<String> value = map.get(strSplit[1]);
value.add(strSplit[0]);
map.put(strSplit[1], value);
}
}
}
처음에 안됬었는데..
그 이유는 조건문에서 범위 지정이다
stopUser[i] >= k
k보다 크다면 전부 맞는건데
stopUser[i] == k
해줘서 같을때만 잡아냈다. 좀 더 조심해야한다.
저번에도 조건문 때문에 문제였는데.. 좀 더 좀 더 신경써야겠다.