π‘λ¬Έμ λΆμ μμ½
- μνΈλ μ΅μ ν κ°μ λͺ¨μκ³Ό λ κ°μ μμμ΄ ν¬ν¨λμ΄μΌ νλ€.
- μ£Όμ΄μ§ μνλ²³λ€ μ€μμ μ νν μνλ²³μΌλ‘ μνΈλ₯Ό μ‘°ν©νκ³ , μ‘°ν©λ μνΈλ μ¬μ μμΌλ‘ μ λ ¬λμ΄μΌ νλ€.
- μ
λ ₯
- 첫째 μ€: μ μ
L
(μνΈμ κΈΈμ΄), μ μ C
(μ£Όμ΄μ§ μνλ²³μ κ°μ)
- λμ§Έ μ€:
C
κ°μ μνλ²³ (μλ¬Έμ, μ€λ¦μ°¨μμΌλ‘ μ£Όμ΄μ§)
- μΆλ ₯
- 쑰건μ λ§μ‘±νλ μνΈλ₯Ό μ¬μ μμΌλ‘ μΆλ ₯ν΄μΌ νλ€.
π‘μκ³ λ¦¬μ¦ μ€κ³
- μ
λ ₯ μ²λ¦¬: μ
λ ₯μΌλ‘ μ£Όμ΄μ§ μνλ²³λ€μ λ°°μ΄λ‘ μ μ₯νλ€.
- μ‘°ν© μμ±: μ£Όμ΄μ§ μνλ²³λ€ μ€
L
κ°μ μνλ²³μ μ ννλ μ‘°ν©μ μμ±νλ€. μ΄λ, μ νλ μ‘°ν©μ΄ 쑰건μ λ§μ‘±νλμ§ νμΈνλ€.
- 쑰건 체ν¬: μ νλ μ‘°ν©μ λͺ¨μμ΄ μ΅μ 1κ°, μμμ΄ μ΅μ 2κ° ν¬ν¨λμ΄ μλμ§ νμΈνλ€.
- μΆλ ₯: 쑰건μ λ§μ‘±νλ μ‘°ν©μ μΆλ ₯νλ€.
π‘μ½λ
const fs = require('fs');
const path = require('path');
const input = fs.readFileSync(path.join(__dirname, 'input.txt')).toString().trim().split('\\n');
const [L, C] = input[0].split(' ').map(Number);
const letters = input[1].split(' ').sort();
const vowels = ['a', 'e', 'i', 'o', 'u'];
const result = [];
function isValid(combination) {
let vowelCount = 0;
let consonantCount = 0;
for (const char of combination) {
if (vowels.includes(char)) {
vowelCount++;
} else {
consonantCount++;
}
}
return vowelCount >= 1 && consonantCount >= 2;
}
function generateCombinations(start, combination) {
if (combination.length === L) {
if (isValid(combination)) {
result.push(combination.join(''));
}
return;
}
for (let i = start; i < C; i++) {
generateCombinations(i + 1, [...combination, letters[i]]);
}
}
generateCombinations(0, []);
console.log(result.join('\\n'));
π‘μκ°λ³΅μ‘λ
- μ‘°ν© μμ±μ κ²½μ°,
C
κ°μ μνλ²³μμ L
κ°λ₯Ό μ ννλ μ‘°ν©μ μμ±ν΄μΌ νλ―λ‘, μ‘°ν©μ μλ (C/L)μ΄λ€.