CodingTest/Java로 푼 코딩 테스트

[2022 KAKAO BLIND RECRUITMENT / Java] 신고 결과 받기

마볼링 2022. 6. 22. 22:34

📍 생각대로 코딩

  • ArrayList, 단계를 나누어서 진행
  • 유저 ID =>신고 List 중복제거 => 신고당한 카운트 세기 => 신고당한 횟수가 K번 이상이면 신고자 카운트 증가 
import java.util.ArrayList;
class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        int[] answer = new int[id_list.length];
        
        //이름 저장 List
        ArrayList<String> name = new ArrayList<String>();
        for(String id : id_list){
            name.add(id);
        }
        
        //신고 List 중복제거
        ArrayList<String> reports = new ArrayList<String>();
        for(String re : report){
            if(!reports.contains(re)){
               reports.add(re);
            }
        }
        
        //신고당한 카운트
        ArrayList<Integer> B = new ArrayList<Integer>();
        for(int i=0; i<name.size();i++){
            B.add(0);
        }
        for(int i =0; i<reports.size(); i++){
            String A_index = reports.get(i).split("\\s")[0];
            String B_index = reports.get(i).split("\\s")[1];
            for(int j = 0; j<name.size(); j++){
                if(B_index.equals(name.get(j))){
                    B.set(j,B.get(j)+1);
                }
            }
        }
        
        //K이상이면 신고자 카운트 증가
        ArrayList<Integer> A = new ArrayList<Integer>();
        for(int i=0; i<name.size();i++){
            A.add(0);
        }
        for(int i=0; i<B.size(); i++){
            if(B.get(i)>=k){
                for(int j =0; j<reports.size(); j++){
                    String A_index = reports.get(j).split("\\s")[0];
                    String B_index = reports.get(j).split("\\s")[1];
                    if(B_index.equals(name.get(i))){
                        for(int n=0; n<name.size(); n++){
                            if(A_index.equals(name.get(n))){
                                A.set(n,A.get(n)+1);
                            }
                        }
                    }
                }   
            }
        }
        for(int i=0; i<A.size(); i++){
            answer[i] = A.get(i);
        }
        
        return answer;
    }
}

결과

 

📍 수정

  • 이름 저장 List는 필요없을 거 같다
  • ArrayList A는 필요없을거같다.
import java.util.ArrayList;
class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        int[] answer = new int[id_list.length];
                
        //신고 List 중복제거
        ArrayList<String> reports = new ArrayList<String>();
        for(String re : report){
            if(!reports.contains(re)){
               reports.add(re); 
            }
        }
        
        //신고당한 카운트
        ArrayList<Integer> B = new ArrayList<Integer>();
        for(int i=0; i<id_list.length;i++){
            B.add(0);
        }
        for(int i =0; i<reports.size(); i++){
            String A_index = reports.get(i).split("\\s")[0];
            String B_index = reports.get(i).split("\\s")[1];
            for(int j = 0; j<id_list.length; j++){
                if(B_index.equals(id_list[j])){
                    B.set(j,B.get(j)+1);
                }
            }
        }
        
        //K이상이면 신고자 카운트 증가
        for(int i=0; i<B.size(); i++){
            if(B.get(i)>=k){
                for(int j =0; j<reports.size(); j++){
                    String A_index = reports.get(j).split("\\s")[0];
                    String B_index = reports.get(j).split("\\s")[1];
                    if(B_index.equals(id_list[i])){
                        for(int n=0; n<id_list.length; n++){
                            if(A_index.equals(id_list[n])){
                                answer[n] += 1 ;
                            }
                        }
                    }
                }   
            }
        }
        
        return answer;
    }
}

결과...

아 왜... 더 늘어나......!!