function solution(participant, completion) {
//completion을 participant에 대입해서 맞으면 해당 paticipant삭제
for(let i=0; i<completion.length; i++) {
for(let j=0; j<participant.length; j++) {
if(participant[j] === completion[i]) {
participant.splice(j,1,'');
// j 인덱스에서부터 1개 삭제 후 그 자리 빈칸 넣기
// 빈칸을 넣어주지 않으면 participant의 전체 인덱스가 줄어버린다.
break;
}
}
}
const answer =participant.join('')
// join을 통해 위에서 넣어준 빈칸들 제거
return answer;
}
내 풀이는 이렇게 했는데 이중 for문을 써서 그런지 효율성 부분에서 틀려버렸다. 다른 사람 풀이를 참고해보니
function solution(participant, completion) {
/*
for(let i in participant) {
if(completion.includes(participant[i]) == false) return participant[i];
completion.splice(completion.indexOf(participant[i]), 1);
}
*/
participant.sort();
completion.sort();
for(let i in participant) {
if(participant[i] !== completion[i]) return participant[i];
}
}
정렬 후에 같은 인덱스 상에서 서로 다르면 그 사람만 리턴하는 식으로 했다.