프로그래머스
[Level1] 신고 결과 받기 Java 저 세상 풀이
sayho
2022. 2. 5. 22:27
나의 저세상 문제 풀이
다른 분들은 HashMap도 사용하고 Stream도 멋지게 사용하시는데. . 이중 반복문만 오조오억번 사용해버림.. (반성)
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
// 본인이 신고한 사람 중 정지당한 사람의 수
int result[] = new int[id_list.length];
// 정지된 회원 목록
List<String> stopIdList = new ArrayList<String>();
// 신고 당한 횟수
int answer[] = new int[id_list.length];
// 중복 신고 제거
Set<String> removeDupli = new HashSet<>(Arrays.asList(report));
Iterator<String> iter = removeDupli.iterator();
// 1. 각 ID별 신고 당한 횟수 카운트
while(iter.hasNext()) {
String arr[] = iter.next().split(" ");
for(int i=0; i<id_list.length; i++) {
if(id_list[i].equals(arr[1])) {
answer[i]++;
break;
}
}
}
// 2. 정지당한 id 따로 저장
for(int i=0; i<id_list.length; i++) {
if(answer[i] >= k) {
stopIdList.add(id_list[i]);
}
}
// 3. 각 회원별 신고멤버 정지현황 저장
Set<String> removeDupli2 = new HashSet<>(Arrays.asList(report));
Iterator<String> iter2 = removeDupli2.iterator();
while(iter2.hasNext()) {
String[] what = iter2.next().split(" ");
for(int i=0; i<id_list.length; i++) {
if(what[0].equals(id_list[i]) && stopIdList.contains(what[1])) {
result[i]++;
break;
}
}
}
return result;
}
}