알고리즘/해시
프로그래머스 level1 : 신고결과받기(카카오) - JAVA
mezo
2022. 2. 21. 19:23
728x90
반응형
HashMap, HashSet이 핵심인 문제다.
1. 일반적
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
Map<String, HashSet<String>> reportMemberList = new HashMap<>(); // 멤버별 신고 당한 id
Map<String, Integer> getMailCount = new HashMap<>(); // 멤버별 처리 결과 메일 받은 횟수
// 초기화
for(String id : id_list){
getMailCount.put(id,0);
reportMemberList.put(id, new HashSet<>());
}
// 멤버별로 신고받은 id 저장
for(String rep : report){
String[] checkReport = rep.split(" ");
reportMemberList.get(checkReport[1]).add(checkReport[0]);
}
// 신고 당한 멤버별로 for문
for(String key : reportMemberList.keySet()){
// 해당 멤버를 신고한 아이디들
HashSet<String> reporters = reportMemberList.get(key);
// 신고한 아이디들이 k개 이상이면
if(reporters.size() >= k){
for(String reporter : reporters){
Integer getMail = getMailCount.get(reporter);
getMailCount.put(reporter, getMail + 1);
}
}
}
int[] answer = new int[id_list.length];
for(int i=0; i < answer.length; i++){
answer[i] = getMailCount.get(id_list[i]);
}
return answer;
}
}
2. 스트림으로 다시 풀어보기
728x90
반응형