[アルゴリズム]等号を求める



N(1<=N<=100)名の生徒の国語の点数を入力し、入力順に生徒ごとの点数を書き出します.

説明:


国語の点数を表すN個の整数を配列として入力する.同じ点数を入力すると、高い点数で同じ処理を行います.すなわち、最高点数は92点で、3位92点があれば1位は3位、次は4位となる.

問題を解く


ハードコーディングをできるだけ避けてみましたが、問題は解決しにくいので、答えとして返される配列の初期値を設定しました.この問題は完全なナビゲーションであるため,インデックス値を二重forゲートの周りで比較した.
function solution(arr, n) {
  let answer = [1, 1, 1, 1, 1];
  for(let i=0; i < n; i++) {
    for(let j=0; j < n; j++) {
      if (arr[i] < arr[j]) {
        answer[i]++
      }
    }
  }
  return answer;
}

ハードコーディングの解題を避ける


Array.from

const answer = Array.from({length: len}, () => 1); 
Array.fromメソッドを使用すると、入力配列の長さを数値1に浅くコピーし、初期値を生成できます.
function solution(arr) {
  let len = arr.length;
  let result = Array.from({ length: len }, () => 1)
  for (let i=0; i < len; i++) {
    for (let j=0; j < len; j++) {
      if (arr[i] > arr[j]) {
        result[i]++;
      }
    }
    return result;
  }