*작성중* JavaScript 순열 & 조합 알고리즘
조합 : nCk
주어진 배열의 서로 다른 n 개의 요소에서 순서를 생각하지 않고 k 개를 선택하는 조합. 중복을 허용하지 않습니다.
const arr = [ 1, 2, 3, 4 ];
3개를 선택하는 조합의 결과물 : [1, 2, 3], [1, 2, 4], [2, 3, 4], [1, 3, 4]
주어진 배열의 요소들을 이용해서 조건에 맞는 배열들을 얼마나 만들 수 있는가
#프로그래머스 LV01: 예산
JavaScript로 순열과 조합 알고리즘 구현하기
1. 조합 서로 다른 n개의 물건에서 순서를 생각하지 않고 r개를 택할 때, 이것은 n개에서 r개를 택하는 조합이라 하고, 이 조합의 수를 기호로 nCr와 같이 나타낸다. 바로 예를 살펴보도록 하자. 4Com
velog.io
https://pul8219.github.io/algorithm/algorithm-permutation-and-combination/
[알고리즘] 순열과 조합, 재귀함수 이해하기(JavaScript)
[알고리즘] 순열과 조합, 재귀함수 이해하기(JavaScript)
pul8219.github.io
function sumFunc(arr){
//배열 입력 받으면,
return arr.reduce((acc, cur) => acc + cur);
}
function solution(d, budget) {
if(sumFunc(d) === budget){
return d.length;
}
let combination = [];
let temp = d[0];
let cnt = 0;
let newArr = [];
for( let i = 0 ; i < d.length; i++){
//새 배열에 d 배열 요소를 하나 씩 넣는다.
combination.push(d[i]);
if(sumFunc(combination) < budget){
//sumFunc([0]) = 0 < budget
//해당 i요소가 사라진 새 배열 - newArr : [ 3, 2, 5, 4]
newArr = d.slice(i+1, d.length);
//그렇게 줄어든 배열로 다시 재귀를 돌리는거임.
return solution(newArr, budget)
}else if (sumFunc(combination) > budget){
cnt++;
}
}
return cnt;
}
풀이 : 조합을 생각해서 배열의 첫 번째 요소를 기준으로 재귀함수를 돌리면서 sumFuc 이라는 함수를 만들어서 구하려 했으나 머리가 더 안 돌아감.
아예 잘 못 생각하고 있었음 이렇게까지 파고 들 문제가 아니었음 간단하게 다시 생각해보면.. 쉬웠던
무조건 누적 덧셈 하려 하지말꼬 최종 값에서 요소들을 빼주는 식으로 접근을 할 수 있었음..
프로그래머스 LV 01: 약수의 갯수와 덧셈
약수를 구하는 공식은 잊지 말자 .
https://collocationvoca.tistory.com/28
자바스크립트(JS) 약수 모두 출력하기/ 개수(갯수) 구해보기
자바스크립트 약수 구하기는 코딩 테스트에서 조금씩 나오는 문제이면서, 꼭 코딩 테스트 문제 뿐만 아니라 여러가지 다른 요소에서 많이 쓰이는 자바스크립트 나머지 기호를 활용한 대표적인
collocationvoca.tistory.com