innn

99클럽 코테 스터디 5일차 TIL 본문

카테고리 없음

99클럽 코테 스터디 5일차 TIL

33삼 2024. 7. 27. 07:42
function solution(participant, completion) {
    const completionObject = new Map();
    const participantObject = new Map();

    // Create participantObject map
    for (let i = 0; i < participant.length; i++) {
        participantObject.set(
            participant[i],
            participantObject.has(participant[i])
                ? participantObject.get(participant[i]) + 1
                : 1
        );
    }

    // Create completionObject map
    for (let i = 0; i < completion.length; i++) {
        completionObject.set(
            completion[i],
            completionObject.has(completion[i])
                ? completionObject.get(completion[i]) + 1
                : 1
        );
    }

    // Check for non-completers
    for (let i = 0; i < participant.length; i++) {
        const participantName = participant[i];
        if (!completionObject.has(participantName) || 
            completionObject.get(participantName) !== participantObject.get(participantName)) {
            return participantName;
        }
    }
}

 

오늘은 마라톤 경기에 참가한 선수들과 완주한 선수들의 리스트가 주어졌을 때, 완주하지 못한 선수를 찾는 문제를 해결했다. 이를 위해 JavaScript의 Map 객체를 사용하여 각 리스트에서 이름을 카운트하고, 이를 비교하여 완주하지 못한 선수를 찾아내는 알고리즘을 작성했다. (오늘은 아침에 풀어서 js로 풀고 싶어서 그냥 js로 풀었음)

  1. 먼저 Map 객체를 사용하여 참가자와 완주자의 이름을 카운트하는 객체를 생성했다.
  2. 두 번째 for 루프에서는 완주자 리스트를 순회하며 이름을 카운트하여 completionObject를 생성했다.
  3. 마지막으로, 참가자 리스트를 순회하면서 각 참가자의 이름이 완주자 리스트에 없는지 또는 카운트가 맞지 않는지를 확인하고, 조건에 맞는 이름을 반환했다.