Algorithm/PROGRAMMERS[Java]
Lv1. 신고 결과 받기[카카오]
씨니
2022. 5. 2. 00:32
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