https://www.acmicpc.net/problem/1759
주어진 문자들을 증가하는 순서로 배치하기 위해 우선 숫자로 바꿔준다.(num_alpha)
->[0,2,8,18,19,22]
그리고 증가하는 순서로 배치하고 다시 알파벳으로 바꿔준다.
->['a', 'c', 'i', 's', 't', 'w']
조합을 위해서 combinations모듈을 사용해주었다.
->['acis', 'acit', 'aciw', 'acst', 'acsw', 'actw', 'aist', 'aisw', 'aitw', 'astw', 'cist', 'cisw', 'citw', 'cstw', 'istw']
해당 리스트에서 각 단어, 단어에서 문자별로 모음, 자음을 판단하여 최소 한 개의 모음, 최소 두 개의 자음 요건을 충족할 경우 결과 리스트에 추가하고 다음 단어로 넘어간다.
from itertools import combinations
l,c=map(int, input().split())
alpha=list(map(str, input().split()))
vowel=['a','e','i','o','u']
num_alpha=[]
for i in alpha:
num_alpha.append(ord(i)-ord('a'))
num_alpha.sort()
alpha=[]
for i in num_alpha:
alpha.append(chr(i+ord('a')))
lst=list(map(''.join, combinations(alpha, l)))
result=[]
for word in lst:
cnt_vowel=0
cnt_else=0
for single in word:
if single in vowel:
cnt_vowel+=1
elif single not in vowel:
cnt_else+=1
if cnt_vowel>=1 and cnt_else>=2:
result.append(word)
break
for i in result:
print(i)