암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한개의 모음과 최소 두개의 자음으로 구성되어야한다. 그리고 알파벳이 암호에서 증가하는 순서로 배열되어야한다.(abc는 가능하지만 bac는 가능하지 않다)
C개의 문자들이 주어졌을 때 가능성 있는 암호들 모두 구해야 한다.
암호의 길이와 문자의 개수, 주어질 알파벳들을 입력받는다.
[코드 설명]
1. 알파벳을 순서대로 정렬을 한다
2. combinations 함수를 이용해 주어진 알파벳 C개로 길이가 L인 조합을 구한다.
itertools.combinations(C, L)
1에서 구한 조합들 중 모음이 1개 이상 자음이 2개 이상인지 확인 후 만족하면 count를 한다
[코드]
import sys
import itertools
l, c=map(int, input().split())
ch=list(sys.stdin.readline().split())
ch.sort() #알파벳 순서 정렬
passwords=list(itertools.combinations(ch, l)) #암호 조합 저장
for password in passwords : #모음 1개 이상 자음 2개 이상 인지 확인
vo = 0
co = 0
for i in range(l) :
if password[i] in 'aeiou' : vo+=1 #모음인 경우
else: co+=1 #자음 인 경우
if vo>=1 and co>=2: #조건에 맞는 경우 출력
print(''.join(password))