시도 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;
}
}