늘 겸손하게

JavaScript - 순열, 조합 본문

Algorithm

JavaScript - 순열, 조합

besforyou999 2022. 7. 15. 15:10

출처 : https://velog.io/@devjade/JavaScript%EB%A1%9C-%EC%88%9C%EC%97%B4%EA%B3%BC-%EC%A1%B0%ED%95%A9-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0

 

JavaScript로 순열과 조합 알고리즘 구현하기

1. 조합 서로 다른 n개의 물건에서 순서를 생각하지 않고 r개를 택할 때, 이것은 n개에서 r개를 택하는 조합이라 하고, 이 조합의 수를 기호로 nCr와 같이 나타낸다. 바로 예를 살펴보도록 하자. 4Com

velog.io

 

 

자바스크립트로 순열과 조합을 만드는 코드

 

1. 순열 ( Permutation )

 

정의 : 서로 다른 n개의 원소를 가지는 집합에서 r개를 중복 없이 순서에 상관있게 선택하는 경우

 

즉, 원소의 순서가 중요한 경우에는 순열이다. 순열에서 [1, 2, 3]을 선택하는 경우와 [1, 3, 2]를 선택하는 경우는 다른 경우이다

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
const getPermutations = function(arr, selectNumber) {
  const results = [];
  if (selectNumber === 1return arr.map((el) => [el]);
 
  arr.forEach( (fixed, index, origin) => {
    const rest = [...origin.slice(0, index), ...origin.slice(index+1)];
    const permutations = getPermutations(rest, selectNumber - 1);
    const attached = permutations.map((el) => [fixed, ...el]);
    results.push(...attached);
  });
  return results;
}
cs

 

 

2. 조합 ( Combination )

 

정의 : 서로 다른 n개의 원소를 가지는 집합에서 r개를 중복없이 순서에 상관없게 선택하는 경우

 

즉, 원소의 순서가 상관없는 경우에는 조합. 조합에서 [1, 2, 3]을 선택하는 경우와 [1, 3, 2]를 선택하는 경우는 같은 경우이다

 

 

1
2
3
4
5
6
7
8
9
10
11
12
const getCombinations = function(arr, selectNumber) {
  const results = [];
  if (selectNumber === 1return arr.map((el) => [el]);
 
  arr.forEach( (fixed, index, origin) => {
    const rest = origin.slice(index+1);
    const permutations = getPermutations(rest, selectNumber - 1);
    const attached = permutations.map((el) => [fixed, ...el]);
    results.push(...attached);
  });
  return results;
}
cs

 

 

'Algorithm' 카테고리의 다른 글

정렬 알고리즘 정리 - Python  (1) 2022.09.20
JavaScript - 소수 판별  (0) 2022.07.15
기초 알고리즘 요약  (0) 2022.05.13
자료구조 - Priority Queue ( 우선순위 큐 )  (0) 2022.02.09
자료구조 - Heap  (0) 2022.02.09