完走していない選手

4225 ワード

問題の説明


多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.

私が書いたコード

function solution(participant, completion) {
    
    participant
    
    let answer = participant.filter( (el => {
        return !completion.includes(el) 
    }))
    
    return answer[0];
}
最初は参加者の名前に完成した名前が含まれていなかったのは、完走しなかった選手だったはずだ.
そしてフィルターを利用してフィルターを行いました.
しかし、同名の人物がいることが阻害された.
例#3
「誤導」は参加者リストに2人いたが、完走者リストには1人しかいなかったため、1人は完走しなかった.

修正されたコード

function solution(participant, completion) {
    
    completion.sort();
    participant.sort();
    
    for (let i = 0; i < participant.length; i++ ){
        if (participant[i] !== completion[i]){
            return participant[i]
        }
    }

}
いつも方法が思いつかない.
質問ボタンがあったので押してみたら、質問テーマでsortがたくさん見えました.
その瞬間は幸いにもすぐに論理を思いついた.
sortを使用して2つの配列の要素をソートし、繰り返し文でループすると、
含まれていない名前から、2つの配列の要素が異なります.
これにより、2つの配列の要素が一致しない場合、参加者の対応する要素が返されます.
(完成は完全な選手リストなので)

採点結果



質問リンク


https://programmers.co.kr/learn/courses/30/lessons/42576