프로그래머스 문제 풀이 소수 만들기 (JS)
소수 만들기
문제
nums라는 배열이 파라미터로 주어질 때, 3개의 nums[i]를 더해 소수가 되는 경우의 수를 구하는 함수 solution을 만들기
풀이
function solution(nums) { const isPrime = function(n){ for ( let j=2; j*j<=n; j++) { if(n%j===0) return false; } return true; } const result = combination(nums).filter((data)=>isPrime(data)).length; return result; } function combination(numArr){ let temp = []; const f = (pre,curr) => { for(let i=0; i<curr.length; i++){ const newArr =[...pre,curr[i]] if(newArr.length===3){ let sum=0; for ( let i of newArr ){ sum+=i; } temp.push(sum); } f(newArr,curr.slice(i+1)); } } f([],numArr); return temp; }
다른풀이 1
function isPrime(num){ for ( let i = 2; i*i<=num; i++ ) { if(num%i===0) return false; } return true; } let answer = 0; function combination(nums,arr,index,r,target) { if(r === 0){ //arr[i]는 nums의 Idx const sum = arr.reduce((a,b)=>a+nums[b],0); console.log(arr,sum); if(isPrime(sum)) answer++; } else if ( target === nums.length ) return; else { arr[index] = target; combination(nums,arr,index+1,r-1,target+1); combination(nums,arr,index,r,target+1); } } function solution(nums){ const arr=[]; combination(nums,arr,0,3,0); return answer; }
다른풀이 2
function primecheck(n){ for(var i=2;i<=Math.sqrt(n);i++){ if(n%i == 0){ return false; } } return true; } function solution(nums){ var cnt = 0; for(var i=0;i<nums.length-2;i++){ for(var j=i+1;j<nums.length-1;j++){ for(var w=j+1;w<nums.length;w++){ if(primecheck(nums[i]+nums[j]+nums[w])){ cnt++; } } } } return cnt; }
** 문제별로 전략적 접근. 알고리즘 성능관련 항상 고민하기
Author And Source
이 문제에 관하여(프로그래머스 문제 풀이 소수 만들기 (JS)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@devmomo/프로그래머스-문제-풀이-소수-만들기-JS저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)