TIL 48: [μλ£κ΅¬μ‘°/μκ³ λ¦¬μ¦] μ½λ© ν μ€νΈ μ€λΉ
μκ³ λ¦¬μ¦ λ¬΄μ μ μ½λ© ν μ€νΈμ μμ£Ό λ±μ₯νκ³ νμν μ£Όμ κ°λ λ€μ νμ΅νμ΅λλ€. ν¬κ² μμ΄/μ‘°ν©, λ©±μ§ν©, GCD/LCM(μ΅λ곡μ½μ, μ΅μ곡배μ), λ©±μ§ν©μ λν΄ κ°λ μ κ°λ¨ν μ 리νκ³ , λ¬Έμ λ₯Ό νλ©΄μ κ°λ μ μ μ©ν΄λ³΄μμ΅λλ€.
ν° νμ λμΌν μνμμ μΌλΆμ λ²μλ ννλ§ λ€λ₯΄κ² ν΄μ€λ μ€λ³΅μμ΄, μμ΄, μ‘°ν© λ±μ ννν μ μμμ΅λλ€. μλ₯Ό λ€μ΄, λ°°μ΄μμ 5κ°λ₯Ό μ ννλ κ²½μ° νλμ μλ₯Ό μ ννκ³ , λ¨μ λ°°μ΄μμ 4κ°λ₯Ό μ νν΄μΌ ν©λλ€. μ΄ν λ νλμ μλ₯Ό μ ννκ³ ,λ¨μ λ°°μ΄μμ 3κ°λ₯Ό μ νν΄μΌ ν©λλ€. μ΄λ¬ν κ³Όμ μ μ¬κ·κ³Όμ μΌλ‘ μκ² λλ μ μμ΄ ν° νμ λμΌνκ² λ©λλ€.
κ·Έλμ μ€λμ μ€λ³΅μμ΄, μμ΄, μ‘°ν©μ ν νλ¦Ώμ κ°λ¨νκ² μ 리ν΄λ³΄λ €κ³ ν©λλ€!
μ€λ³΅μμ΄
//#1
function permutation(rounds, result) {
if (rounds === 0) {
output.push(result);
return;
}
for (let i=0; i<game.length;i++) {
const nowPlay = game[i]
permutation(rounds-1, result.concat(nowPlay));
}
}
//#2
function permutation(arr, selectNum) {
const result = [];
if (selectNum === 1) return arr.map((v) => [v]);
arr.forEach((v, idx, arr) => {
const fixed = v;
const restArr = arr;
const permutationArr = permutation(restArr, selectNum - 1);
const combineFix = permutationArr.map((v) => [fixed, ...v]);
result.push(...combineFix);
});
return result;
}
μμ΄
// #1
function permutation(stuffArr, result, choiceNum) {
if (choiceNum === 0) {
output.push(result);
return;
}
for (let i = 0; i < stuffArr.length; i++) {
let gredient = stuffArr[i];
let sauce = stuffArr.slice();
sauce.splice(i,1);
permutation(sauce, result.concat(gredient), choiceNum-1)
}
}
//#2
function permutation(arr, selectNum) {
let result = [];
if (selectNum === 1) return arr.map((v) => [v]);
arr.forEach((v, idx, arr) => {
const fixer = v;
const restArr = arr.filter((_, index) => index !== idx);
const permuationArr = permutation(restArr, selectNum - 1);
const combineFixer = permuationArr.map((v) => [fixer, ...v]);
result.push(...combineFixer);
});
return result;
}
μ‘°ν©
//#1
function combination(cards, result, num) {
if(num === 0) {
output.push(result);
return;
}
for (let i=0; i < cards.length; i++) {
let card = cards[i];
let rest = cards.slice(i+1);
combination(rest, result.concat(card), num-1)
}
}
//#2
function combination(arr, selectNum) {
const result = [];
if (selectNum === 1) return arr.map((v) => [v]);
arr.forEach((v, idx, arr) => {
const fixed = v;
const restArr = arr.slice(idx + 1);
const combinationArr = combination(restArr, selectNum - 1);
const combineFix = combinationArr.map((v) => [fixed, ...v]);
result.push(...combineFix);
});
return result;
}
μ ν΄λ¦¬λ νΈμ λ²
μ ν΄λ¦¬λ νΈμ λ²μ λ μμ μ΅λ곡μ½μλ₯Ό ꡬνλ μκ³ λ¦¬μ¦μ λλ€.
μ¬κΈ°μ νΈμ λ²μ΄λ λ μκ° μλ‘ μλλ°© μλ₯Ό λλμ΄μ μνλ μλ₯Ό μ»λ μκ³ λ¦¬μ¦μ λ§ν©λλ€.
νΈμ λ² μ¦λͺ μ https://www.youtube.com/watch?v=TxdljAFjTNw μ΄ μμμ μ°Έκ³ νμλ©΄ λ λ― ν©λλ€!
const getGCD = function (M, N) {
if (M % N === 0) {
gcd = N;
return;
}
else {
getGCD(N, M % N);
}
}