https://programmers.co.kr/learn/courses/30/lessons/92334
- 모든 유저들에 대해서 그 유저가 신고한 사람들이 정지처분을 받았을 경우 카운트를 해주면 되는데 동일인 신고시의 중복제거를 해줘야한다. 해시맵을 2개 선언해서 하나는 아이디String-인덱스Integer 페어를 담고, 하나는 아이디String-중복제거용해시Set을 담아서 리포트 배열을 읽어내려가면서 해당 유저를 누가 신고했는지 Set에 담아준다. Set 사이즈가 k이상이면 해당 셋에 담겨있는 신고자의 배열값을 1 증가시킨다.
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int N = id_list.length, M = report.length;
int[] answer = new int[id_list.length];
Map<String, Integer> m = new HashMap<>();
for(int i = 0; i < N; ++i) {
m.put(id_list[i], i);
}
Map<String, Set<String>> map = new HashMap<>();
for(int i = 0; i < N; ++i) {
map.put(id_list[i], new HashSet<String>());
}
for(int i = 0; i < M; ++i) {
StringTokenizer st = new StringTokenizer(report[i]);
String u = st.nextToken(), v = st.nextToken();
map.get(v).add(u);
}
for(String key: map.keySet()) {
Set<String> set = map.get(key);
if(set.size() >= k) {
for(String s: set) ++answer[m.get(s)];
}
}
return answer;
}
}
'Algorithm > programmers' 카테고리의 다른 글
2022 Kakao blind 92341 - 주차 요금 계산(해쉬, 정렬, 문자열파싱, 구현) - Java 풀이 (0) | 2022.03.24 |
---|---|
2022 Kakao blind 92335 - k진수에서 소수 개수 구하기(진법변환, 소수판별, 문자열, 구현) - Java 풀이 (0) | 2022.03.24 |
프로그래머스 고득점 Kit 하루만에 뽀개기 - 8. 깊이/너비 우선검색(DFS,BFS) C++ 풀이 (0) | 2022.03.19 |
프로그래머스 고득점 Kit 하루만에 뽀개기 - 7. 동적계획법(C++) 풀이 (0) | 2022.03.19 |
프로그래머스 고득점 Kit 하루만에 뽀개기 - 6. 그리디(Java, C++) 풀이 (0) | 2022.03.19 |