[プログラマ]小数を作成(JavaScript)


  • 私のコードは最高のスキームではありません.
  • レコードのみ、共有用、参照してください!
  • 🔗 質問リンク


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

    📙 私が考えている答えの過程

  • 配列中のindexを3つの組合せのすべての場合の数を求め,すべての場合の数の組合せとして加算する.
  • 加算の結果値が小数である場合、答え値には1が加算されます.
  • は最終的に答えの値によってすべての場合の少数数がどれだけあるかを知ることができる.
  • 📝 解答コード

    function solution(nums) {
        var answer = 0;
        var tmp = nums.map((val,index)=>index);
        var arr = getCombinations(tmp,3);
        for(var i = 0; i < arr.length; i++){
            var sum = 0;
            for(var j = 0; j < arr[i].length; j++){
                sum += nums[arr[i][j]];
            }
            if(prime(sum))
                answer++;
        }
        return answer;
    }
     //조합 알고리즘
    function getCombinations(arr, selectNumber) {
    	var results = [];
    	if (selectNumber === 1) return arr.map((value) => [value]);
    	
    	arr.forEach((fixed, index, origin) => {
    		var rest = origin.slice(index + 1);
    		var combinations = getCombinations(rest, selectNumber - 1); 
    		var attached = combinations.map((combination) => [fixed, ...combination]);
    		results.push(...attached);
    	});
    	
    	return results;
    }
    //소수면 true 아니면 false 반환하는 함수
    function prime(num){
        var cnt = 0;
        if(num > 1){
            for(var i = 1; i <= num; i++){
                if(num%i == 0)
                    cnt++;
                if(cnt > 2)
                    return false;
            }
            if(cnt <= 2)
                return true;
        }else
            return false;
    }