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

김승규·2023년 12월 6일
0

2022 KAKAO BLIND RECRUITMENT 신고 결과 받기

| 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 〉	실패 (시간 초과)
profile
꿈꾸는 리얼리스트 개발자 김승규입니다.

0개의 댓글