完走していない選手
7077 ワード
問題の説明
多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.
せいげんじょうけん
I/O例
作成されたコード
function solution(participant, completion) {
/*
participant, completion을 정렬한다.
정렬한다면 순서대로 정렬이 되어있으므로 idx마다 비교를 하고 값이 같지 않다면 명단에서 빠진 것
*/
let answer = '';
participant.sort()
completion.sort()
for (let i = 0; i < participant.length; i++) {
if (participant[i] !== completion[i]) {
answer = participant[i];
break;
}
}
return answer;
}
indexOf
で比較しようとしたが,indexOf
も重複するコードであることが分かった.そこでindexOf
を削除し,直接比較した.indexOf
でもっと効率的になると思ったのは間違いでした.よいことを学んだリファレンスコードと分析
function solution(participant, completion) {
completion.map(name => completion[name] = (completion[name] | 0) + 1);
//completion[name] 이 존재한다면 completion[name] = completion[name] + 1
//존재하지 않는다면 completion[name] = 0 + 1;
return participant.find(name => !completion[name]--);
}
新しく知り合った場所.
Obj[key]
を使って面配列にアクセスできます!この部分と論理演算子を用いて、完了時に
[key, value]
として配列に値を入力する.let arr = ['eden', 'kiki', 'kiki'];
arr.map(name => arr[name] = (arr[name] | 0) + 1)
console.log(arr);// ["eden", "kiki", "kiki", eden: 1, kiki: 2]
上のコードのようにコンソールで直接検索すると、既存の配列要素が含まれており、オブジェクトのkey、valueとして値が追加されます.
すなわち、
completion[name]
が存在する場合、転送コードはcompletion[name] = completion[name] + 1
であり、存在しない場合、completion[name] = 0 + 1;
である.そしてfalsy(0,fasle,Nan,null,undefined...)使用タイプ
completion[name]
が0より大きい場合、真の値であるため、!completion[name]--
は偽であり、最後に1が減少する.find
は配列内の要素を巡回するので、要素を繰り返すと同時にtrue、すなわちcompletion[name] === 0
で要素を返すと、未完了の人を見つけることができる.Reference
この問題について(完走していない選手), 我々は、より多くの情報をここで見つけました https://velog.io/@jing07161/완주하지-못한-선수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol