Untitled

시도 1. 단순 중복 제거

class Solution {
    public String solution(String[] participant, String[] completion) {
        int partNum = participant.length;
        int comNum = completion.length;
        String answer = "";
        for(String x : completion){
            int i;
            for(i=0;i<partNum;i++){
                if(participant[i].equals(x)){
                    break;
                }
            }
            for(int j=i;j<partNum - 1;j++){
                participant[j] = participant[j+1];
            }
            partNum--;
        }
        answer = participant[0];
        return answer;
    }
}

→ 효율성 테스트에서 $O^2$이 나오면서 시간 초과

시도 2. 정렬 후 비교

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
        int partNum = participant.length;
        int comNum = completion.length;
        String answer = "";
        Arrays.sort(participant);
        Arrays.sort(completion);
        int i =0;
        for(i=0;i<comNum;i++){
            if(!participant[i].equals(completion[i]))
                break;
        }
        answer = participant[i];
        return answer;
    }
}

→ 정확도 테스트와 효율성 테스트 모두 통과

모범 답안

import java.util.HashMap;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        HashMap<String, Integer> hm = new HashMap<>();
        for (String player : participant) hm.put(player, hm.getOrDefault(player, 0) + 1);
        for (String player : completion) hm.put(player, hm.get(player) - 1);

        for (String key : hm.keySet()) {
            if (hm.get(key) != 0){
                answer = key;
            }
        }
        return answer;
    }
}