https://programmers.co.kr/learn/courses/30/lessons/12977
//1. 나의 풀이
function solution(nums) {
var answer = 0;
var combi = [];
var all = [];
var notPrime = 0;
// 3개 조합 만들기
for(var i=0; i<nums.length; i++){
for(var j=i+1; j<nums.length; j++){
for(var k=j+1; k<nums.length; k++){
combi.push(nums[i]);
combi.push(nums[j]);
combi.push(nums[k]);
all.push(combi);
combi = [];
// break; // 주의: break쓰면 안됨. combi를 빈배열로만 만들면 초기화 됨.
}
}
}
// 합이 소수인지 확인하기
for(var x=0; x<all.length; x++){
// 합 구하기
var sum = 0;
sum = all[x].reduce((a,c)=>a+c);
// 소수 확인
for(var y=2; y<sum; y++){
if(sum%y === 0){
notPrime = notPrime + 1;
break;
}
}
}
answer = all.length - notPrime;
return answer;
}
//2. 다른풀이
function solution(nums) {
let answer = 0;
//1. 3자리 숫자 만들기
const len = nums.length;
for (let i = 0; i < len; i++){
for (let j = i+1; j < len; j++){
for (let k = j+1; k < len; k++) {
const number = nums[i]+nums[j]+nums[k];
if (isPrime(number))
answer++;
}
}
}
//2. 소수 판별(2~number까지 하나씩 비교)
function isPrime(number){
if (number < 2) return true;
for (let i = 2; i < number; i++){
if (number % i == 0) return false;
}
return true;
}
return answer;
}
//https://akh95123.blogspot.com/2019/10/javascript_21.html
for문 반복 사용으로 조합을 만들어도 효율성에 문제가 없는지?
#조합
2020 Lv2 -> 2021 Lv1으로 이동