combinations-generator
혹여나 배열을 다루면서 2개 이상의 데이터를 뽑는 모든 경우의 수를 구하는 방법에 대해 고민해 본 적이 있을 것이다.
프로그래머스 문제를 통해 위 문제에 대한 궁금증을 해결해보자!
function primeCount(array) {
//소수 판별 함수
function isPrime(n) {
for (let i = 2; i < n; i++) {
if (n%i===0) return false
}
return true
}
let result = []; // 소수를 담을 배열
// 중복되지 않게 array에서 3가지 수를 뽑는 함수
for (let i = 0; i < array.length; i++) {
for (let j = i + 1; j < array.length; j++) {
for (let k = j + 1; k < array.length; k++) {
let sum = array[i] + array[j] + array[k];
if (isPrime(sum)) { // 뽑은 세 수의 합이 소수일때
if (!result.includes(sum)) result.push(sum) // 배열에 해당 소수값이 없다면 배열에 요소 추가
}
}
}
}
return result.length
}
for문 중첩을 통해 배열에서 3개의 데이터를 뽑는 모든 경우의 수를 나열할 수 있었다.
하지만, 3개보다 그 수가 더 늘어난다면?
nodejs에서는 combinations-generator란 모듈을 지원하고 있다.
그 사용법은 아래와 같다.
var comb = require("combinations-generator");
function primeCount(array) {
function isPrime(n) {
if (n===2 || n===3) return true
if (n%2===0) return false
for (let i = 3; i < parseInt(n/2) + 1; i+=2) {
if (n%i===0) return false
}
return true
}
let iterator = comb(array,3);
let result = [];
for (let item of iterator){
let sum = item[0] + item[1] + item[2];
if (isPrime(sum)) {
if (!result.includes(sum)) result.push(sum)
}
};
return result.length
}
Author And Source
이 문제에 관하여(combinations-generator), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@skyshr/combinations-generator저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)