Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 네트워크 설정
- 자료구조와함께배우는알고리즘입문
- 데비안
- 코드로배우는스프링부트웹프로젝트
- 자바편
- 스프링 시큐리티
- 알파회계
- 구멍가게코딩단
- 티스토리 쿠키 삭제
- ㅒ
- 선형대수
- 이터레이터
- resttemplate
- 페이징
- 리눅스
- 자료구조와 함께 배우는 알고리즘 입문
- 코드로배우는스프링웹프로젝트
- baeldung
- 서버설정
- d
- 친절한SQL튜닝
- 처음 만나는 AI 수학 with Python
- GIT
- 목록처리
- 스프링부트핵심가이드
- 처음 만나는 AI수학 with Python
- Kernighan의 C언어 프로그래밍
- network configuration
- iterator
- /etc/network/interfaces
Archives
- Today
- Total
bright jazz music
신고 결과 받기 본문
//reporter: 신고한 사람
//singo: 신고 당한 사람
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
// StringTokenizer는 문자열을 구분자(delimeter)로 분리한다.
// public StringTokenizer(String str);
// delim을 지정해 주지 않는 경우 \n, \t 등의 공백으로 잘라낸다.
// public StringTokenizer(String str, String delim);
// 지정된 구분자 "delim"으로 잘라냄
// public StringTokenizer(String str, String delim, boolean returnDelims);
// returnDelims 값이 true인 경우, delim까지 토큰으로 포함한다.
// false인 경우 포함하지 않는다.
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
HashMap<String, Set<String>> reporterArr = new HashMap<String, Set<String>>();
HashMap<String, Integer> singoArr = new HashMap<String, Integer>();
//초기화
for(String id : id_list) {
singoArr.put(id, 0);
reporterArr.put(id, new HashSet<String>());
}
//신고된 사람들
for(String cur : report) {
StringTokenizer st = new StringTokenizer(cur, " ");
String reporter = st.nextToken();
String singo = st.nextToken();
if(reporterArr.get(reporter).add(singo)) {
singoArr.put(singo, singoArr.get(singo) + 1);
}
}
//신고한 사람
for(String cur : report) {
StringTokenizer st = new StringTokenizer(cur, " ");
String reporter = st.nextToken();
String singo = st.nextToken();
//본인이 신고한 사람의 신고 당한 횟수가 k이상일 경우에만 남기기
if(singoArr.get(singo) < k)
reporterArr.get(reporter).remove(singo);
}
for(int i = 0; i < id_list.length; i++) {
answer[i] = reporterArr.get(id_list[i]).size();
}
return answer;
}
}
//id_list는 이용자의 id가 담긴 문자열 배열
//report는 각 이용자가 신고한 이용자의 id가 담긴 문자열 배열,
// 정지 기준이 되는 신고 횟수 k
// "각 유저별로 처리 결과 메일을 받은 횟수"를 배열에 담아 return
////////////////////////////////////////////////////////
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
List<String> list = Arrays.stream(report).distinct().collect(Collectors.toList());
HashMap<String, Integer> count = new HashMap<>();
for (String s : list) {
String target = s.split(" ")[1];
count.put(target, count.getOrDefault(target, 0) + 1);
}
return Arrays.stream(id_list).map(_user -> {
final String user = _user;
List<String> reportList = list.stream().filter(s -> s.startsWith(user + " ")).collect(Collectors.toList());
return reportList.stream().filter(s -> count.getOrDefault(s.split(" ")[1], 0) >= k).count();
}).mapToInt(Long::intValue).toArray();
}
}
////////////////////////////////////////////////////////////
import java.util.*;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
ArrayList<User> users = new ArrayList<>();
HashMap<String,Integer> suspendedList = new HashMap<>(); //<이름>
HashMap<String,Integer> idIdx = new HashMap<String,Integer>(); // <이름, 해당 이름의 User 클래스 idx>
int idx = 0;
for(String name : id_list) {
idIdx.put(name,idx++);
users.add(new User(name));
}
for(String re : report){
String[] str = re.split(" ");
//suspendedCount.put(str[0], suspendedCount.getOrDefault(str[0],0)+1);
users.get( idIdx.get(str[0])).reportList.add(str[1]);
users.get( idIdx.get(str[1])).reportedList.add(str[0]);
}
for(User user : users){
if(user.reportedList.size() >= k)
suspendedList.put(user.name,1);
}
for(User user : users){
for(String nameReport : user.reportList){
if(suspendedList.get(nameReport) != null){
answer[idIdx.get(user.name)]++;
}
}
}
return answer;
}
}
class User{
String name;
HashSet<String> reportList;
HashSet<String> reportedList;
public User(String name){
this.name = name;
reportList = new HashSet<>();
reportedList = new HashSet<>();
}
}
'Algorithm&Data structure' 카테고리의 다른 글
배열을 역순으로 정렬하기 (0) | 2022.05.02 |
---|---|
숫자 문자열과 영단어 (0) | 2022.04.13 |
Binary Search (이진검색) (0) | 2021.12.22 |
Comments