| https://school.programmers.co.kr/learn/courses/30/lessons/92334
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
report = Arrays.stream(report).distinct().toArray(String[]::new);
// 유저 객체 생성
User[] users = new User[id_list.length];
for(int i = 0; i < id_list.length; ++i) {
users[i] = new User(id_list[i], i);
}
// 신고 정보 기록
for(String r : report) {
String reportingId = r.split(" ")[0]; // 신고한 유저 아이디
String reportedId = r.split(" ")[1]; // 신고된 유저 아이디
for(User user : users) {
if(user.id.equals(reportedId)) {
user.reporting(users[Arrays.asList(id_list).indexOf(reportingId)]);
break;
}
}
}
// 정지 유저에게 신고한 유저들 카운트
for(User user : users) {
if(user.whoReportedMe.size() >= k) {
for(User reporter : user.whoReportedMe) {
++answer[reporter.idx];
}
}
}
return answer;
}
}
class User {
public String id;
public int idx;
public ArrayList<User> whoReportedMe = new ArrayList<>();
public User(String id, int idx) {
this.id = id;
this.idx = idx;
}
public void reporting(User user) {
whoReportedMe.add(user);
}
}
import java.util.Arrays;
import java.util.Objects;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
int[] answer = new int[id_list.length];
report = Arrays.stream(report).distinct().toArray(String[]::new);
int[] cntReported = new int[id_list.length];
// 각 유저별로 신고당한 횟수 계산
for(int i = 0; i < id_list.length; ++i) {
for(String r : report) {
if(Objects.equals(r.split(" ")[1], id_list[i])) {
++cntReported[i];
}
}
}
// 각 유저가 신고하여 정지된 아이디 수 계산
for(int i = 0; i < id_list.length; ++i) {
if(cntReported[i] >= k) {
for(String r : report) {
String reportingId = r.split(" ")[0]; // 신고한 유저 아이디
String reportedId = r.split(" ")[1]; // 신고된 유저 아이디
if(Objects.equals(reportedId, id_list[i])) {
++answer[Arrays.asList(id_list).indexOf(reportingId)];
}
}
}
}
return answer;
}
}
테스트 3 〉 실패 (시간 초과)
테스트 9 〉 실패 (시간 초과)
테스트 11 〉 실패 (시간 초과)
테스트 14 〉 실패 (시간 초과)
테스트 15 〉 실패 (시간 초과)
테스트 20 〉 실패 (시간 초과)
테스트 21 〉 실패 (시간 초과)