class Solution {
public int[] solution(String[] id_list, String[] report, int k) {
// 중복 제거
report = Arrays.stream(report).distinct().toArray(String[]::new);
int[] answer = new int[id_list.length];
int[] reportedCnt = new int[id_list.length];
for (String reported : report) {
String[] s = reported.split(" ");
int index = Arrays.asList(id_list).indexOf(s[1]);
reportedCnt[index] += 1;
}
for (String reported : report) {
String[] s = reported.split(" ");
int index = Arrays.asList(id_list).indexOf(s[1]);
if (reportedCnt[index] >= k) {
answer[Arrays.asList(id_list).indexOf(s[0])] += 1;
}
}
return answer;
}
}
Arrays
함수 사용에 미숙하고, 이와 Stream
를 사용해서 배열의 중복을 제거하는 방법이 있다는 것을 알지 못해서
한참 걸렸으며, 여러번 실패했다.
잘 알아 두도록 하자.
Arrays를 사용한 배열의 인덱스 확인
Arrays.asList(array).indexOf(Object);
Arrays와 Stream을 사용한 배열의 중복 제거 - String 배열 예시
Arrays.stream(array).distinct().toArray(String[]::new);
추가로, 다른 사람의 풀이를 보다보니
따로 객체 클래스(Person) 를 생성해서 해결하는 방법도 있었다.
다음에는 이를 활용해서 풀어볼 수 있도록 해보자.