모든 선수와 완주한 선수를 주고 완주하지 못한 선수를 구하는 문제이다.
문제의 핵심은 시간복잡도가 n^2 이 나오면 안되기 때문에 Map 을 이용해서 푸는 것이다.
function solution(participant, completion) {
const participantMap = new Map();
participant.forEach((eachParticipant, index) => {
if(participantMap.has(eachParticipant)) {
let eachParticipantValue = participantMap.get(eachParticipant);
participantMap.set(eachParticipant, ++eachParticipantValue);
} else {
participantMap.set(eachParticipant, 1);
}
});
completion.forEach(eachCompletion => {
if(participantMap.has(eachCompletion)) {
let eachCompletionValue = participantMap.get(eachCompletion);
if(eachCompletionValue === 1) {
participantMap.delete(eachCompletion);
} else {
participantMap.set(eachCompletion, --eachCompletionValue);
}
}
});
const participantMapIterator = participantMap.keys();
return participantMapIterator.next().value;
}
동명이인이 섞여있기에 key 에 사람 이름, value 에 인원 수로써 처리했다.