개발/코딩

[프로그래밍] 프로그래머스 예제문제 풀어보기 < 신고 결과 받기> (25점..)

mabb 2022. 3. 12. 01:25
반응형

 안녕하세요. 삶의 질을 높이고자 노력하는 영차영차입니다.
프로그래머스라는 사이트를 알게되어 예제를 통해 연습을 해보고자 합니다.
하루에 예제를 하나 씩 풀어볼 수 있다면 좋겠습니다만 처음 시도해본 문제가 생각보다 어렵습니다.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코딩테스트연습 - 모든문제 - 난이도 level1 - java 선택

'신고 결과 받기' 라는 테스트에 도전을 해보았습니다. 기본기가 부족하다는 것을 다시한번 느끼게 되었습니다.
테스트 1,2가 통과되어 성공했다고 생각했으나 테스트 24까지 추가 검증 결과 정확성 25%로 처참한 성적을 받았습니다.
문제의 요구사항과 제한사항에 부합하지 않는 모양입니다.

 생각해본 풀이방법은
1. record의 중복값을 제거하기
2. id_list의 멤버 별로 신고 당한 경우 신고자를 '신고자배열'에 저장하기
3. 신고당한 횟수가 k이상일 경우 '신고자배열'을 '메일대상자'배열에 추가하기( 신고자배열은 다음 멤버 검토시 초기화)
4. 모든 멤버 검토 완료 후 id_list의 멤버와 '메일 대상자'가 일치할 경우를 카운팅하여 answer배열의 동일한 인덱스에
  카운팅한 값을 바인딩하기.

이었는데 뭔가 잘못된 모양입니다.
뭐가 잘못됐는지 공부해야겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import java.util.ArrayList;
 
 
class Solution {
    public int[] solution(String[] id_list, String[] report, int k) {
        int[] answer = new int[id_list.length];
        int temp;
        
        //report 의 중복값 제거
        
        ArrayList<String> reportDist = new ArrayList<>();
        ArrayList<String> mailList = new ArrayList<>();
        
        
        for(String data:report) {
            if(!reportDist.contains(data)) {
                reportDist.add(data);
            }        
        }
        String[] reportD = new String[reportDist.size()];
        int tempco = 0;
        for(String data:reportDist) {
            reportD[tempco++= data;
            
        }
        
        
        for(String member:id_list) {
            int reportCount =0;
            temp = 0;
            ArrayList<String> memberReport = new ArrayList<>();
            
            
            for(int i=0; i<reportD.length;i++) {            
                if((member.equals(report[i].split(" ")[1]))) {
                    
                    memberReport.add(reportD[i].split(" ")[0]);  
                    reportCount++;
                }            
            }
            if (reportCount>=k) {
                for(String reportsucc:memberReport) {
                    mailList.add(reportsucc);
                }            
                    }    
                }
        
        for(int q=0; q<id_list.length;q++) {
            int sum = 0;
            for(String mail:mailList) {
                if(id_list[q].equals(mail)) {
                    sum++;
                }
            }    
            answer[q] = sum;
        }                
        return answer;
    }
}
cs

 

 

 

출처: 프로그래머스 채점결과

반응형