알고리즘
프로그래머스 level1 : 신고 결과 받기 - Java
mezo
2023. 6. 2. 11:16
728x90
반응형
import java.util.*;
import java.util.Map.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
List<Integer> answer = new ArrayList<>();
HashMap<String, Set<String>> reportedList = new HashMap<>();
HashMap<String, Integer> mailed = new HashMap<>();
// reportedList에 '피신고자=[신고자들]' 넣기
for(String names: report){
String reporter = names.split(" ")[0];
String reported = names.split(" ")[1];
HashSet<String> reporterList = new HashSet<>(
reportedList.getOrDefault(reported, Collections.emptySet())
);
reporterList.add(reporter);
reportedList.put(reported, reporterList);
}
// reportedList 중 value 크기가 2이상인것은 mail 보내기 - Iterator
// Iterator<String> mapIter = reportedList.keySet().iterator();
// while(mapIter.hasNext()){
// String key = mapIter.next();
// if(reportedList.get(key).size() >= k){
// Iterator<String> setIter = reportedList.get(key).iterator();
// while(setIter.hasNext()){
// String value = setIter.next();
// mailed.put(value, mailed.getOrDefault(value, 0) + 1);
// }
// }
// }
// reportedList 중 value 크기가 2이상인것은 mail 보내기 - Entry
for(Entry<String, Set<String>> entry : reportedList.entrySet()){
if(entry.getValue().size() >= k){
Iterator<String> setIter = entry.getValue().iterator();
while(setIter.hasNext()){
String value = setIter.next();
mailed.put(value, mailed.getOrDefault(value, 0) + 1);
}
}
}
// id_list 의 이름 순서대로 메일받은 수 answer에 넣기
for(String name: id_list){
answer.add(mailed.getOrDefault(name, 0));
}
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}
728x90
반응형