1. 순열
- 순열(permutation)은 서로 다른
n
개의 원소를 가지는 집합에서 순서를 고려하여 중복 없이 r
개의 원소로 이루어진 부분집합을 만드는 것이다.
![](https://velog.velcdn.com/images/donggoo/post/272c1b99-540e-4681-a9cb-a89f41950405/image.png)
- 아래는 서로 다른 A, B, C 3개의 원소로 이루어진 집합에서 2개의 원소를 순서를 고려하여 중복 없이 부분집합을 만들면 총 6개의 부분집합이 나오게 된다.
![](https://velog.velcdn.com/images/donggoo/post/ec74bfe5-d485-4e46-8fa2-fe9ebd052195/image.png)
function permutationLoop(lookup) {
let lookup = ['A', 'B', 'C', 'D', 'E'];
let result = [];
for (let i = 0; i < lookup.length; i++) {
for (let j = 0; j < lookup.length; j++) {
for (let k = 0; k < lookup.length; k++) {
if (i === j || j === k || k === i) continue;
result.push([lookup[i], lookup[j], lookup[k]])
}
}
}
return result;
}
console.log(permutationLoop());
2. 조합
- 조합(combination)은 서로 다른
n
개의 원소를 가지는 집합에서 순서를 고려하지 않고 중복 없이 r
개의 원소로 이루어진 부분집합을 만드는 것이다.
![](https://velog.velcdn.com/images/donggoo/post/823e8515-82d4-4ebb-9d99-cbca4d9b50e0/image.png)
- 아래는 서로 다른 A, B, C 3개의 원소로 이루어진 집합에서 2개의 원소를 순서를 고려하지 않고 중복 없이 부분집합을 만들면 총 3개의 부분집합이 나오게 된다.
![](https://velog.velcdn.com/images/donggoo/post/84ab5e9c-e681-42a0-914e-b7cc4e86d4ce/image.png)
function combinationLoop() {
let lookup = ['A', 'B', 'C', 'D', 'E'];
let result = [];
for (let i = 0; i < lookup.length; i++) {
for (let j = i + 1; j < lookup.length; j++) {
for (let k = j + 1; k < lookup.length; k++) {
result.push([lookup[i], lookup[j], lookup[k]]);
}
}
}
return result;
}
console.log(combinationLoop());