μμ΄
1. μλ‘ λ€λ₯Έ nκ°μ 물건 μ€μμ rκ°λ₯Ό ννμ¬ ν μ€λ‘ λ°°μ΄νλ κ²μ nκ°μ 물건μμ rκ° ννλ μμ΄μ΄λΌ νκ³ , μ΄ μμ΄μ μλ₯Ό κΈ°νΈλ‘ nPrμ κ°μ΄ λνλΈλ€.
2. μλ‘ λ€λ₯Έ nκ°μμ rκ°λ₯Ό ννλ μμ΄μ μλ
(λ¨, 0 < r β¦ n)
[λ€μ΄λ² μ§μλ°±κ³Ό] μμ΄ (Basic κ³ κ΅μμ μν μν곡μ νμ©μ¬μ , 2002. 3. 10., κΉμ’ νΈ)
λ¨μνκ² λ§νμλ©΄ ν λ°°μ΄μ 4κ°μ μλ‘ λ€λ₯Έ μ«μκ° λ€μ΄κ°μκ³ , κ·Έ μ€μμ 3κ°μ λ¬Έμλ€μ μμλ‘ κ³¨λΌμ μ€λ³΅μμ΄ μ‘°ν©μ μν€λ κ²μ μμ΄μ΄λΌκ³ ν μ μλ€.
μ리
- νλμ μλ₯Ό μ ννλ€.
- νλλ₯Ό μ ννμΌλ λ¨μ μλ€ μ€μμ 2κ°λ₯Ό μ νν΄μΌνλ€.
μ΄ κ³Όμ μ λ°λ³΅νλ©΄μ λ§λ€μ΄μ§λ€. μ΄λ° κ³Όμ μ λ°λ³΅νλ λͺκ°μ§λ€μ΄ μλλ° μ΄ μ€μμ μμ΄μ κ²½μ°μ μμ΄κ³ μΌλμΌλμμ΄λ€. λ½μμ§ 3κ°μ μκ° μ€λ³΅μ΄ λλλΌλ μμκ° λ€λ₯΄λ©΄ λ€λ₯Έ μλ‘ λ°μλ€μΈλ€.
μμ΄μ½λ
function permutation(arr, selectNum) {
let result = [];
if (selectNum === 1) return arr.map((v) => [v]);
arr.forEach((v, idx, arr) => {
//맀κ°λ³μ λ°°μ΄arrμμ ν μ«μλ₯Ό ν½ν΄μ fixerλ‘ λ£μ΄μ€λ€
const fixer = v;
//fixerμ μ μΈν μ«μλ€λ§ λ΄μ restArr λ°°μ΄μ λ§λ λ€
const restArr = arr.filter((_, index) => index !== idx);
//μ¬κ·λ‘ λ¨μ μμ λ°°μ΄κ³Ό μ ν μμμ -1ν μλ₯Ό λ£μ΄μ λκ°μ΄ λ§λ λ€
const permuationArr = permutation(restArr, selectNum - 1);
//μ νλ fixerμ permuationArrμ ν©μ³μ result λ°°μ΄μ λ£μ΄μ€λ€
const combineFixer = permuationArr.map((v) => [fixer, ...v]);
result.push(...combineFixer);
});
return result;
}
μμ΄μ ꡬνλ μ½λλΌκ³ λμμλ ν¨μκ° μλ€. forλ¬Έλ§μ μ΄μ©ν΄μ ꡬνλ λ°©λ²λ μλλ° μκ° μ¦κ°ν μλ‘ νκ³μ μ΄ μμ΄μ μΈμ§ μ¬κ·ν¨μλ₯Ό μ¬μ©ν΄μ ꡬνλ λ°©λ²μ΄ λ ν©λ¦¬μ μΌλ‘ 보μΈλ€.
μμ ν¨μλ₯Ό νμ΄μ 보μ¬μ€λ€λ©΄
permutation([1,2,3],2)
fixer: 1, restArr: [2,3], permutationArr: permutation([2,3],1)
1-1. permutation([2,3],1)
selectNum ===1 => return [[2],[3]]
μ΄κ²μ μμ permuatitonArrμ΄ λλ€.
μ¦
fixer: 1,
restArr: [2,3],
permutationArr: [[2],[3]],
combineFixer: [[1,2],[1,3]]
result.push([[1,2],[1,3]])
μ΄λ κ² 1μ λ¨Όμ 골λμ λ μμ΄μ ꡬνλ μμμ΄λ€. μ΄λ κ² 2,3μ λ°λ³΅νλ€.
π μλ£μΆμ²
'κ°λ° > Etc...' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TypeScript] νμ μ€ν¬λ¦½νΈ κΈ°λ³Έ (Literal Types / Union Types / Intersection types) (0) | 2022.06.08 |
---|---|
babel.config.js vs .babelrc (0) | 2022.06.02 |
dependenciesμ devDependencies μ°¨μ΄ (0) | 2022.03.30 |
vsc μ μ©ν νμ₯ νλ‘κ·Έλ¨ μΆμ²! (0) | 2022.02.28 |
μλνλ μ€μμ λ€λ₯Έ λΈλ‘κ·Έλ‘ λ°μ΄ν° μ΄μ νκΈ° (0) | 2022.02.22 |