Solution

Memo

  • 그냥 간단한 조합 구현 문제 2
  • 조합은 그냥 구하고, valid 이후 출력해주는 정도
  • 변수를 너무 난잡하게 써서 습관적으로 정리해야할 것 같다.
bool is_valid_password(vector<char> &chars) {
    int vowel_count = 0;
    int consonant_count = 0;

    for (char c : chars) {
        if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
            vowel_count++;
        } else if (c >= 'a' && c <= 'z') {
            consonant_count++;
        }
    }

    return (consonant_count >= 2 && vowel_count >= 1);
}

void combination(vector<char> &characters, int idx, int level, vector<char> &tmp) {
    if (level == plen) {
        if (is_valid_password(tmp)) {
            for (char c : tmp) {
                cout << c;
            }
            cout << '\n';
        }
        return;
    }

    for (int i = idx; i < characters.size(); i++) {
        tmp.push_back(characters[i]);
        combination(characters, i + 1, level + 1, tmp);
        tmp.pop_back();
    }
}