풀이과정
1. 유저 ID를 기준으로 신고한사람을 저장해야하므로 Map 사용
2. value는 key를 신고한 유저의 아이디를 중복없이 저장해야하므로 HashSet<> 사용
3. 신고한 HashSet<>의 크기가 K보다 클 경우 idxMap의 value값 1씩 증가시켜줌
배운점
1. HashSet<> 의 형태는 [1,2,3]과 같은 리스트 형태이다.
2. map.get(to).add(from); 시 muzi = [apeach, ...] 이런식으로 저장된다. apeach를 더 넣어도 한번만 저장된다.
3. int myArray[범위]++; 위치 범위의 요소에 1을 증가시킨다.
고로answer[idxMap.get(name)]++; 는 이름위치를 만들고 이름위치의 요소 1를 증가시킨다.
출력 : ["muzi"의 이메일 받은개수, "frodo"의 이메일 받은개수, "apeach"의 이메일 받은개수, "neo"의 이메일 받은개수]
idMap의 위치 값을 받아서 위치 범위의 요소를 1를 증가시킨다.
코드
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
Map<String, HashSet<String>> map = new HashMap<>();
Map<String, Integer> idxMap = new HashMap<>();
for(int i=0;i<id_list.length;i++){
String name = id_list[i];
map.put(name,new HashSet<>());
idxMap.put(name,i);
}
for(String rn : report){
String[] reportName = rn.split(" ");
String from = reportName[0];
String to = reportName[1];
map.get(to).add(from);
}
for(int i=0;i< id_list.length;i++){
HashSet<String> reportEmail = map.get(id_list[i]);
if(reportEmail.size() >=k){
for(String name : reportEmail){
answer[idxMap.get(name)]++;
}
}
}
return answer;
}
}
'[PGS]' 카테고리의 다른 글
[JAVA] 프로그래머스 - Summer/Winter Coding(~2018) 배달 (0) | 2023.04.27 |
---|---|
[JAVA] 기지국 설치 (0) | 2023.04.23 |
[프로그래머스] 성격 유형 검사하기 자바 (0) | 2023.04.03 |
[PGS] 문자열 내 P와 Y의 개수 (0) | 2022.12.24 |
[PGS] 자연수 뒤집어 배열로 만들기 (0) | 2022.12.20 |