코딩 공부

[프로그래머스] 완주하지 못한 선수

ZZJJing 2021. 2. 13. 23:49

 

실행결과는 ok 인데 

효율성 테스트 0점이라서 통과를 못한다. 

 

public class Study {


    public static void main(String[] args) {
        //System.out.println("Hello World.!!");

        String[] participant = {"leo", "kiki", "eden"};
        String[] completion = {"eden", "kiki"};

        System.out.println(solution(participant, completion));

    }

    public static String solution(String[] participant, String[] completion) {
        // 힌트: completion의 길이는 participant의 길이보다 1 작습니다.

    
        String answer = "";
        for(int i=0; i<participant.length; i ++){
            for(int j=0; j<completion.length; j++){
                if(participant[i].equals(completion[j])){
                   participant[i] = "";
                    completion[j] = "";
                }
            }
        }

        for(String i : participant){
            if(i != ""){ answer = i; }
        }
        
        return answer;
    }
}

 

 


효율성을 뭘 해야 통과할 수 있을 지 몰라서 살짝 힌트를 얻은게 

Arrays.sort() 함수 였다. 

효율성 부분은 함수나 이런 것들을 사용해서 빠르게 적용할 수 있는걸 말하는 것 같다.. 

그냥 for문 while문 if 문 만 썼던 나는 대략 난감한 느낌이었다... 

 

그래도 어찌 저찌 이리저리 대입해서 완료! 

 

import java.util.Arrays;

public class Study {


    public static void main(String[] args) {
        String[] participant = {"mislav", "stanko", "mislav", "ana"};
        String[] completion = {"stanko", "ana", "mislav"};

        //String[] participant =  {"marina", "josipa", "nikola", "vinko", "filipa"};
        //String[] completion = {"josipa", "filipa", "marina", "nikola"};
        System.out.println(solution(participant, completion));

    }

    
    public static String solution(String[] participant, String[] completion) {
        // 힌트: completion의 길이는 participant의 길이보다 1 작습니다.
        // 참가자 중에는 동명이인이 있을 수 있습니다.

        String answer = "";
        
        Arrays.sort(participant);
        Arrays.sort(completion);

        for(int i=0; i<completion.length; i++){

            if(!(completion[i].equals(participant[i]))){
                answer = participant[i];
                break;
            }
            
        }

		// 정상적으로 같을 때는 맨 마지막에 참가자 한명이 남아서 answer 값이 "" 이다.
        if(answer.equals("")){
            answer = participant[participant.length -1];
        }

        // for(String t : participant){
        //     System.out.println("참가자 : " + t);
        // }
        // System.out.println("-------------------");
        // for(String e : completion){
        //     System.out.println("완주자 : " + e);
        // }

        // answer = participant[participant.length-1];

        return answer;
    }
}

 

 

 

생각해보니 이 카테고리가 

 

해시.. 였다 ㅠㅠ 

다른 사람들 코드보면서 다시 해봐야겠다.