[プログラマー/javascript]14ディジタル配列


問題の説明
arrayの各要素で、昇順で配列された配列の係数で区切られた値を返す関数を作成します.
要素が除数で区切られていない場合は、配列に-1を入れて返します.
せいげんじょうけん
  • arrは自然数を含む配列である.
  • 整数i,jについて、i≠jの場合、arr[i]≠arr[j]である.
  • 除数は自然数です.
  • arrayは、長さが1より大きい配列である.
  • I/O例
    arrdivisorreturn[5,9,7,10]5[5,10][2,36,1,3]1[1,2,3,36][3,2,6]10[-1]
    I/O例説明
    I/O例#1
    arrの5つの要素のうち5つは5と10です.したがって、[5,10]を返します.
    I/O例#2
    arrのすべての要素は1で区切られています.元素を昇順に並べて[1,2,3,36]を返します.
    I/O例#3
    3、2、6は10に分けられない.[1]を返します.分離された要素がないためです.
    に答える
    function solution(arr, divisor) {
        var answer = [];
        for(i=0; i<arr.length; i++) {
          if(arr[i] % divisor == 0) {
            answer.push(arr[i]);
          }
        }
        if(answer.length == 0) {
          answer.push(-1);
        }
        answer.sort((a,b) => a - b);
        return answer;
    }
    解説
    配列を因子で割った場合、値が0の場合は除数になります.
    最後に昇順処理を行うだけで比較的簡単に解決できる.