[javascript-algorithm]プログラマー-自然数配列を反転


(1)問題リンク


https://programmers.co.kr/learn/courses/30/lessons/12932

(2)解答と解説1


-問題を解く

        let n = 12345;

        const solution1 = (n) => n.toString().split('').map((str)=>Number(str)).reverse();

        console.log(solution1(n)); // [5, 4, 3, 2, 1]

-問題の説明

  • toString()メソッドを使用して、数値型を文字型に変換します.
  • split()メソッドで文字を分割して配列に入れます.
  • map()メソッドで、個別に分かれた文字型をデジタル型に変換します.
  • 逆()メソッドを使用して、配列順序を反転します.
  • (2)問題解きと説明2


    -問題を解く

            let n = 12345;
    
            function solution2(n) {
                let answer = [];
    
                do {
                    answer.push(n%10);
                    n = Math.floor(n/10);
                } while (n>0);
    
                return answer;
            }
    
            console.log(solution2(n)); // [5, 4, 3, 2, 1]

    -問題の説明

  • arr変数に空の配列を割り当てます.
  • do-while文を使用します.このとき条件はn>0にのみ繰り返される.
  • push()メソッドを使用して、n%10の残りの値を追加します.
    (期間5(12345を10で割った余)->4(1234を10で割った余)->3(123を10で割った余)->2(12を10で割った余)->1(1を10で割った余)
  • .
  • n変数にMathを追加します.floor()を使用して値を割り当て、n/10をパラメータとして小数位数を割り当てます.
    (循環順1234(1234.5の小数点以下廃棄数)->123(123.4の小数点以下廃棄数)->12(12.3の小数点以下廃棄数)->1(1.2の小数点以下廃棄数)->0(0.1の小数点以下廃棄数)
  • )
  • 値は、指定された変数応答を出力する.
  • (2)問題解きと解説3


    -問題を解く

            let n = 12345;
    
            function solution3(n) {
                let nStr = n.toString();
                let answer = [];
    
                for(let i = nStr.length-1; i >= 0; i--) {
                    answer.push(Number(nStr[i]));
                }
    
                return answer;
            }
    
            console.log(solution3(n)); // [5, 4, 3, 2, 1]

    -問題の説明

  • toString()メソッドは、数値型を文字型に変換し、nStr変数に割り当てます.
  • 解答変数に空の配列を割り当てます.
  • for反復文を使用するには順序を反転する必要があるため、nStorの変数長-1から反復文を開始し、iが0以上の場合は繰り返し実行します.また、インデックス値を減らす必要があるため、増減演算子i--を使用してi値を減らす.
  • 反復文では、push()メソッドで反転した文字列を順次解答変数に割り当て、number()関数で数値形式に変換して割り当てます.
  • 値で指定した変数の答えを出力します.
  • (3)参考資料

  • do...while
  • Math.floor()