クラス会長(ハッシュ)



班長を選んで、A、B、C、D、E候補者が登録します.投票用紙にはクラス全員が自分で選んだ候補者の記号(アルファベット)が書かれていて、先生がその記号を発表しています.
先生の発言が終わったら、どの記号を印刷した候補者が班長になるプログラムを作成してください.投票の結果、必ず班長が選ばれると仮定します.

出力の説明


クラス会長に選ばれた記号を印刷します.

入力例

  • 'BACBACCACCBDEDE'
  • 出力例


    C

    問題を解く

    function solution(s) {
      let answer;
      let max = 0;
      let hashObj = {};
      const arr = s.split('');
      for(let i = 0; i < arr.length; i++) {
        if (hashObj[arr[i]]) {
          hashObj[arr[i]] += 1;
        } else {
          hashObj[arr[i]] = 1;
        }   
      }
      console.log(hashObj);
      for(let key in hashObj) {
        const value = hashObj[key];
        if (value > max) {
          max = value
          answer = key; 
        }
      }
      return answer;
    }
    
    const s = 'BACBACCACCBDEDE';
    console.log(solution(s));
    鍵を空の配列に渡し、鍵に一致する値を増減するように配列を整理します.
    配列からvalueを抽出し、最大値を表す変数と比較して、キー値を戻り値に再割り当てすることで問題を解決します.

    JavaScriptでHashを処理する


    https://velog.io/@yunsungyang-omc/JS-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A1%9C-%ED%95%B4%EC%8B%9C%ED%85%8C%EC%9D%B4%EB%B8%94-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0

    new Map()関数を使用してハッシュして問題を解く

    const hash = new Map()で変数を宣言すると、キーとベルクラスがペアで結合されたオブジェクトが得られます.set()関数とget()関数で対応するpropertyが存在する場合、増減数値の形式で問題を解くことができる.
    function solution(s) {
    	let answer;
      let hash = new Map();
      for (let x of s) {
        if (hash.hasOwnProperty(x)) {
          hash.set(x, hash.get(x) + 1);
        } else {
          hash.set(x, 1);
        }
      }
      console.log(hash);
      let max = Number.MIN_SAGE_INTEGER;
      for (let [key, value] of hash) {
        if (value > max) {
          max = value;
          answer = key;
        }
      }
      return answer;
    }