강의로 돌아가기
이두원

Java 코드 리뷰좀 부탁드립다. (정확도 : 40.0 효율성 40.0 총 80/100)

기본적으로 String 배열을 sort 함수로 정렬을 했구요. 
Arrays.binarySearch 함수로  이진검색을 해서 결과값이 마이너스 일 경우에 결과를 리턴하도록 처리했습니다. 
중복값 발생으로 값을 찾지 못한경우에는 2중 for문으로 다시 검색을 하게끔 조건을 주었습니다. 
테스트 코드로는 정확히 결과가 실행되는데 어떤조건에서 문제가 생기는지를 못찾겠네요. 
여기서 효율성이라 함은 시간이 실행시간이 오래걸려서 발생하는 문제인가요? 항상 5번째 테스트케이스에서 정확성이랑 효율성 모두 실패가 나네요. 

혹시 어떤조건으로 함수를 실행시켰는지 그 String배열의 매개변수라도 알 수 있을까요?? 
작성중인 코드―Solution.java
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
import java.util.Arrays;
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        Arrays.sort(completion);
        Arrays.sort(participant);
        int point = -1;
        for(int i=0; i < participant.length; i++) {
            int a = Arrays.binarySearch(completion,participant[i]);
            if(a < 0) {
                point = i;
                answer = participant[i];
                return answer;
            } 
        }
        int breaker = -1;
        // 동명이인 조건 
        if(point == -1) {
            for (int i=0; i < participant.length; i++ ) {
                for(int j=1; j < participant.length; j++) {
                    if(breaker==1) break;
                    if(participant[i] == participant[j]) {
                        breaker = 1;
                        answer = participant[j];
                        break;
                    }
                }
            }
        }
        return answer;
    }
}
1 개의 답변
Demi

안녕하세요.
효율성테스트케이스는 코드의 시간복잡도를 체크합니다.

본 문제는 O(nlogn) 또는 O(n)으로 풀어야하는문제입니다.
작성하신 코드는 O( n2 )이네요.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.