nPr 계산
3P2은 3개 중 2개를 뽑아 줄 세우는 경우의 수
{1, 2, 3}중 2개를 뽑아 줄을 세우면
{1, 2}를 뽑아 줄을 세울 수 있겠습니다.
{1, 2}, {2, 1} 2개가 나왔습니다.
{1, 3}도 2개가 나오겠죠 {2, 3}도 2개가 나올 것입니다.
이렇게 총 6개가 나오게 됩니다.
공식은 3 * 2!이 됩니다.
여기에 combination은 이를 2!으로 나누어 주는 것입니다. nCr이라고 씁니다.
permutation을 계산하는 함수를 만들기 위해서는 중첩된 반복문을 돌게됩니다.
예를 들어 {1, 2, 3}의 permutation을 계산하겠습니다.
const a = [1, 2, 3];
a.forEach((i1)=>{
a.forEach((i2)=>{
if(i1!=i2) {
a.forEach((i3)=>{
if(i3!=i1 && i3!=i2){
console.log(i1,i2,i3)
}
})
}
})
});
배열 [1, 2, 3]을 돌면서 경우의 수를 계산하기 위해서는 첫번째 자리가 1이면서, 두번째 자리가 2, 세번째 자리가 3인 경우
첫번째 자리가 1이면서, 두번째 자리가 3, 세번째 자리가 2인 경우
이런식으로 배열을 순회하게 됩니다.
if문에서 각 자리수가 중복되지 않게 해주는 것입니다. 반복문을 그냥 두게 되면
첫번째 자리가 1이면서, 두번째 자리가 1, 세번째 자리가 1인 경우를 계산하게 됩니다.
이 경우를 건너뛰게 해주는 것이죠
감사합니다.