프로그래머스 lv1 신고 결과 받기

namkun·2022년 6월 25일
0

코딩테스트

목록 보기
1/79

문제 링크

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) 를 생성해서 해결하는 방법도 있었다.

다음에는 이를 활용해서 풀어볼 수 있도록 해보자.

profile
개발하는 중국학과 사람

0개의 댓글