알고리즘 문제 풀기

js 순열과 조합 구하는 식 정리

Fo_rdang 2024. 6. 17. 11:46
반응형

문제를 풀 때 활용해야 할 경우가 많다. 그냥 암기하자. 

순열

: 순서를 고려해서 요소 선택 

- 예를 들어, [1, 2, 3]의 순열은 [1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]와 같이 6가지 

const getPermutation = (arr, n) => {
    if (n === 1) return arr.map(v => [v]); 
    
    const result = []; 
    
    arr.forEach((fixed, idx, origin) => {
        const rest = [...origin.slice(0, idx), ...origin.slice(idx + 1)]; 
        const perms = getPermutation(rest, n - 1);
        const attached = perms.map(perm => [fixed, ...perm]); 
        result.push(...attached);
    }); 
    
    return result; 
}

조합 

: 순서를 고려하지 않고 몇가지 요소 선택하는 방법 

- 예를 들어, [1, 2, 3]에서 2개의 요소를 선택하는 조합은 [1, 2], [1, 3], [2, 3]와 같이 3가지

onst getCombinations = function (arr, selectNumber) {
    const results = [];
    if (selectNumber === 1) return arr.map((el) => [el]); 

    arr.forEach((fixed, index, origin) => {
      const rest = origin.slice(index + 1); 
      const combinations = getCombinations(rest, selectNumber - 1); 
      const attached = combinations.map((el) => [fixed, ...el]); 
      results.push(...attached);
    });

    return results; 
}

 

반응형