728x90
▶ 문제
▶ 풀이방법
- HashMap과 Set사용(중복방지)
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
HashMap<String, Set<String>> singo = new HashMap<>(); //각 유저 당 신고한 유저저장
HashMap<String, Integer> count = new HashMap<>();//각 유저 신고당한 횟수 저장 Map
//각각의 Map초기화
for(String id : id_list) {
singo.put(id, new HashSet<String>());
count.put(id,0);
}
//신고당한 횟수 Map에 저장.
for(String r : report) {
StringTokenizer st = new StringTokenizer(r);
String s1 = st.nextToken();
String s2 = st.nextToken();
//만약 중복방지하는 Set에 들어간다면 신고횟수 up(Set에는 같은 값 들어갈 수 없음. -> 이미 신고했음을 파악)
if(singo.get(s1).add(s2)) {
count.put(s2, count.get(s2) + 1);
}
}
//singo map에서 k번 미만으로 신고된 유저 삭제
for(String r : report) {
StringTokenizer st = new StringTokenizer(r);
String s1 = st.nextToken();
String s2 = st.nextToken();
if(count.get(s2) < k) {
singo.get(s1).remove(s2);
}
}
//k번 이상으로 신고된 유저들로 저장된 map개수 size로 세어 결과값 배열에 저장
for(int i = 0; i < id_list.length; i++){
answer[i] = singo.get(id_list[i]).size();
}
return answer;
}
}
- 내가 푼것 아님,,,,ㅜㅜ 다른사람 풀이 참조
-객체지향의 HashMap과 HashSet의 필요성을 알게되었다! 한수 배울 수 있어서 좋았음.
-Map과, Set의 사용법에 대해 다시한번 복습바람.ㅜ
728x90
'Algorithm > PROGRAMMERS[Java]' 카테고리의 다른 글
Lv2. N개의 최소공배수 (0) | 2022.06.18 |
---|---|
Lv1. N개의 최소공배수 (0) | 2022.05.02 |
Lv1. 로또의 최고순위와 최저순위 (0) | 2022.05.01 |
Lv1. 신규아이디 추천[카카오] (0) | 2022.05.01 |
Lv1. 숫자 문자열과 영단어[카카오] (0) | 2022.05.01 |