テストエンコーディング|(JavaScript)プログラマー:同じ数字が好きではありません
に質問
配列arr.アレイarrの各要素は、0から9の数字で構成されています.この場合、アレイarrは連続して表示される数字を1つだけ保持し、すべて削除しようとします.ただし、削除後に残数を返す場合は、アレイarr内の要素の順序を維持する必要があります.たとえば、
制限
🎹📢I/O例
ほどく
function solution(arr)
{
let answer = [];
let beforeNum = -1;
for(let i = 0; i < arr.length; ++i){
if(beforeNum == arr[i]){
continue;
} else {
answer.push(arr[i]);
beforeNum = arr[i];
}
}
return answer;
}
// 다른 방법
const solution = (arr) => arr.filter((value,index) => value != arr[index+1]);
一つ目の方法は思いついたことをどのような方法で解いたのか、解いた後に前に解いた問題で使っていたフィルターでも解いた.しかし、速度は最初の方法がもっと速いです.🎈他人の解答
let solution=_=>_.filter((i,$)=>i!=_[--$])
これは何ですか...?私が解いた2つ目の方法と同じように、説明しましょう~!まず、
언더라인(_)
はパラメータとして入力される配列、i
は配列の要素、$
はインデックスのようです.こんな文法になったとは知らなかったおかしいな上海~Codeに変えて~let solution =(arr)=>(arr).filter((val,i) => val != arr[--i]);
終了!ここで少し混同される部分は、
arr[--i]
において、i-1
で用いられるように、電位演算子によってiを減算することである.参考資料とサイト(ありがとうございます)
Reference
この問題について(テストエンコーディング|(JavaScript)プログラマー:同じ数字が好きではありません), 我々は、より多くの情報をここで見つけました https://velog.io/@goblin820/코딩테스트-JavaScript-프로그래머스-같은-숫자는-싫어テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol