フルナビゲーション


あなたが方法を考え出せない時、最初からすべてをします!
本当の答えを推測できます.
三七二十一にかかわらず、問題を解きながら考えましょう.

第一題


N個の自然数を入力すると,自然数毎の桁数の和を求め,プログラム出力最大の自然数を記述する.数字の桁数の和が同じであれば、元の数字の大きい数字を答えます.235と1234が同時に答えになる場合は、1234を答えとして出力する.
■説明の入力
1行目は自然数の個数N(3<=N<=100)を与え、2行目はN個の自然数を与える.各自然数の大きさは1000000を超えない.
■出力説明
出力ビット数の和の最大自然数.
■入力例
[128, 460, 603, 40, 521, 137, 123]
■出力例
137
上の問題は、イキントリかその方法が通じないことです.
完全検索で答えを特定しなければなりません

もんだいげんり



各ビット数を加算する方法は、10で割った残りの部分を加算し続けることです.
あるいは
組み込み関数を使用して配列内の要素を配列に変換し、並べ替えます.!

最初の正解コード

function solution(arr){
  let answer
  // 최대값을 비교 하기 위해 자바스크립트에서 가장 작은수를 지정한다.
  let max=Number.MIN_SAFE_INTEGER;
                 
  for (let el of arr){
    let sum = 0
    let tmp = el;
    // 각자리수 더하는 방법
    // 나머지가 0이 되면 멈춘다.
     while(tmp){
      sum += (tmp % 10);
      tmp = parseInt(tmp / 10);
     }
    // 더한 숫자를 비교하는 방법 
    if(sum > max){
       max = sum; 
      // 진짜 원하는건 배열의 요소
       answer = el;
     // 값이 더한 값이 같을때는 요소의 숫자가 큰걸 리턴해라 
     } else if (sum === max){
         if(el > answer) {
             answer = el;
         }
     }
                
   }
    return answer;
}

2番目の正解コード


組み込み関数の使用
function solution(arr){
  let answer
  // 최대값을 비교 하기 위해 자바스크립트에서 가장 작은수를 지정한다.
  let max=Number.MIN_SAFE_INTEGER;
                 
  for (let el of arr){
    let sum = el.toString().split('').reduce((acc,cur) => acc + Number(cur),0);
    // 더한 숫자를 비교하는 방법 
    if(sum > max){
       max = sum; 
      // 진짜 원하는건 배열의 요소
       answer = el;
     // 값이 더한 값이 같을때는 요소의 숫자가 큰걸 리턴해라 
     } else if (sum === max){
         if(el > answer) {
             answer = el;
         }
     }
                
   }
    return answer;
}

第二題


N個の自然数を入力した場合は、プログラムを作成し、各自然数を反転した後、反転数が少数の場合は、その数値を出力します.たとえば、32を23に反転し、23を少数にします.では出力23.しかし、910をひっくり返すと19にデジタル化される.最初の位置から始まる連続ゼロを無視します.
■1行目に自然数の個数N(3<=N<=100)を与え、次の行にN個の自然数を与える.各自然数の大きさは100000を超えない.
■出力1行目の出力反転を示す小数点.出力順は入力順に出力されます.
■入力例
932 55 62 20 250 370 200 30 100
■出力例
123 2 73 2 3

考えてみましょう。


  • なんとか数字をひっくり返す
    10進数係数を10で割ると、作業位置は常に残ります.
    もしそうなら、私たちは繰り返して前に送ることができます.

  • (または)内蔵関数を利用して配列を利用して反転する

  • 反転した数字が少数であると判定し,結果配列に入れる.

  • 少数か否かを判定する方法は、自分以外は少数である.
    ->判定方法は関数の作成です
  • 最初の正解コード

    function isPrime(num){
    if(num === 1) return false;
    for(let i = 2; i <= parseInt(Math.sqrt(num)) ; i++) {
       if(num % i === 0) return false;
    }
    return true;
    }
    function solution(arr){
    let answer = [];
    for(let el of arr){
      let result = 0;
      while(el){
      let t = el % 10;
      result = result * 10 + t
      el = parseInt(el / 10)
      }
     if(isPrime(result)) answer.push(result);
    }
     return answer;
    }

    2番目の正解コード


    組み込み関数の使用方法
    function isPrime(num){
    if(num === 1) return false;
    for(let i = 2; i <= parseInt(Math.sqrt(num)) ; i++) {
       if(num % i === 0) return false;
    }
    return true;
    }
    function solution(arr){
    let answer = [];
    for(let el of arr){
      let result = Number(el.toString().split('').reverse().join(''));
      if(isPrime(result)) answer.push(result);
    }
     return answer;
    }

    第三題


    ガイダンス