Programmers Algorithm - 완주하지 못한 선수

Myung Jin Kim·2023년 9월 24일
0

모든 선수와 완주한 선수를 주고 완주하지 못한 선수를 구하는 문제이다.

문제의 핵심은 시간복잡도가 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 에 인원 수로써 처리했다.

profile
개발을 취미로 하고 싶은 개발자를 목표로 살고 있습니다

0개의 댓글