[プログラマー]アルゴリズム-走りきれない選手をハッシュする


計算は完了していますが、アルゴリズムが足りないと思います.
アルゴリズムをたゆまず学ぶことで知識を得ましょう.

動機。


アルゴリズムの勉強を始めるために、私と2つの動機で勉強を始めました.
3人ともどこから始めたいのか、1週間に1つのコンセプトで、プログラマーの質問に答えたいので、ハッシュから始めます.

ハッシュ概念


問題1完走できなかった選手



問題自体はソートがより速く,より簡単であると考えられるが,ハッシュを学習する目的は学習であるため,ハッシュをどのように適用するかを考えてきた.

ろんり


  • 参加者と完走者の順位の違いは,無条件1名で完走できないことを意味する.

  • ハッシュは[key-value]の組合せであるため、key、valueとして指定する必要があります.
    ->参加者のインデックスをkey(name)-value(1)と見なします.

  • 各キーには、参加者の周りに1の値が割り当てられます.

  • その後、完了者配列の周りにキー値を検索するとvalue-1になります.つまり、同じ名前の人が参加すると、参加者のランキングによってvalue=2になります.完走した人の中では-1しかないので、完走していない人をフィルタリングすることができます.
  • 問題

  • 参加者配列で、回転中の値がobjの場合、同じ名前のユーザが既に存在する場合をどのようにチェックしますか?
  • let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);
    
    for (let entry of iterable) {
      console.log(entry);
    }
    // [a, 1]
    // [b, 2]
    // [c, 3]
    
    for (let [key, value] of iterable) {
      console.log(value);
    }
    // 1
    // 2
    // 3
  • 対象の「key」の顔が見慣れていないような気がしますが、理解が必要です.
    []を使用して、私が設定したキーをobjectのpropertyに設定して読み取ります.
  • JS Object property . vs [] nation
  • .表現アクセスオブジェクトの属性
  • []表現は変数として
  • にアクセスできる.

    コミットコード

    function solution(participants, completions) {
        var answer = '';
        
        const obj = {};
        for(const participant of participants){
            if(!obj[participant]){
                obj[participant] = 1;           
            }else{
                obj[participant] += 1;
            }
        }
        
        for(const completion of completions) {
           if(obj[completion]) {
               obj[completion] -= 1;
           }        
        }
        for(const [key, value] of Object.entries(obj)) {
            if(value > 0) {
                return answer = key;
            }
        }
        return answer;
    }
    
    

    コメントとソース


    注:Noジョセフ(ほとんどジョセフのコードを勉強しています...)https://velog.io/@noyo0123/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-javascript-%EC%99%84%EC%A3%BC%ED%95%98%EC%A7%80-%EB%AA%BB%ED%95%9C-%EC%84%A0%EC%88%98-otk2fxojro
    js object-keyvs object-key差異:https://medium.com/sjk5766/javascript-object-key-vs-object-key-%EC%B0%A8%EC%9D%B4-3c21eb49b763
    ソース:プログラマhttps://programmers.co.kr/learn/courses/30/lessons/42576