JS配列に3つの異なる数字を追加


1.問題の説明


与えられた数字のうち3つの数字を小数に加算すると、個数を求めてみます.数値を持つ配列numsをパラメータとする場合は、solution関数を完了してnumsの3つの異なる数値の小数を返します.
nums	result
[1,2,3,4]	1
[1,2,7,6,4]	4

2.配列に「異なる」3つの数値を追加します。

function solution(nums) {
    var answer = 0;
    var sum = []
    var realsum = []
    var measure = []
    
//     3개 더한 값 A 처리 전체 합(처리한 숫자가 다시 나오지 않게 해야 함)
//     전체합
    for  ( let i =0; i < nums.length-2; i ++){
        for (let j =i+1; j < nums.length-1; j++){
            for (let z =j+1; z < nums.length; z++){
//     전체합의 약수의 개수가 2이면 소수이므로, 답안으로 할당
                    if (division(nums[i] + nums[j] + nums[z]) === 2){
                        answer +=1
                    }
                    
                }
            }
        }

    return answer
}


// num의 약수의 개수를 리턴하는 함수. 약수가 2일 경우에 소수.
function division(num){
    let count = 0 
    for (let i =0; i <= num; i++){
        if ( num % i === 0){
            count+=1
        }
    }
    return count
}

삼중 for문 결과값.
num [1,2,7,6,4] -> result 	1 2 7
                            1 2 6
                            1 2 4
                            1 7 6
                            1 7 4
                            1 6 4
                            2 7 6
                            2 7 4
                            2 6 4
                            7 6 4
三重for文を用いて,まず配列から3つの値を取得する.
この場合、三重ゲートのみを使用すると、1、1、1、2のような同じ値が割り当てられる可能性があることに注意してください.
文に値のnum[i]、num[j]およびnum[z]を割り当てる配列の重複値を指定しない場合は、各文の開始点と終了点を調整する必要があります.
たとえば、[1,2,3,4,5]がある場合、開始点は次のようにする必要があります.
  • i= 0, j=1, z=2.
  • **jとzがiのインデックスと同じにならないように、各for文の開始点を前のfor文より+1の位置に設定する必要があります.
  • i=0, j=i+1, z=j+1
  • z=i+2に設定すると、zインデックスがjインデックスの周りをループするときに重複インデックスが発生するため、前の文の時点+1に設定する必要があります.**
    終了点は次のように設定します.
  • i= a.length-2, j= a.length-1, z= a.length
  • 原理は簡単だ.すべての重複文が配列の最後にループすると、最終的に重複インデックスが生成されるからです.したがって,zから配列の末尾,jからzの−1,iからzの−2を順に設定する.