from itertools import combinations
vowels = ['a', 'e', 'i', 'o', 'u']
l, c = map(int, input().split())
arr = input().split('')
arr.sort()
for password in combinations(arr, l):
count = 0
for char in password:
if char in vowels:
count += 1
if count >= 1 and count <= l-2:
print(''.join(password))
l, c = 4, 6
arr = a t c i s w
>> acis
acit
aciw
acst
acsw
actw
aist
aisw
aitw
astw
cist
cisw
citw
istw
영어 모음들을 나타내는 리스트 vowels를 선언한다.
사용자로부터 입력을 받아 l과 c 변수에 할당한다. 이때 입력은 공백으로 구분된 두 개의 정수이다.
사용자로부터 입력을 받아 arr 변수에 할당한다. 이때 입력은 공백으로 구분된 문자열이다.
arr 리스트를 오름차순으로 정렬한다.
combinations 함수를 사용하여 길이가 l인 arr 리스트의 조합을 생성한다. 각 조합을 password로 받는다.
password의 각 문자에 대해 반복하면서 해당 문자가 vowels 리스트에 포함되어 있는지 확인한다. 포함되어 있다면 count를 1 증가시킨다.
모든 문자를 확인한 후, 최소 한 개의 모음과 최소 두 개의 자음으로 구성되어 확인하기 위해 count가 1 이상이고 l-2 이하인지 확인한다.
조건을 만족하는 경우, password를 문자열로 변환하여 출력한다.
join()
join() 함수는 문자열을 연결할 때 구분자로 사용된다.
join() 함수의 기본 구문은 다음과 같다.
구분자.join(리스트)
여기서 구분자는 문자열 연결 시 각 요소 사이에 삽입될 문자열이며, 리스트는 연결하려는 문자열 요소들을 포함하는 리스트이다.
예를 들어, 리스트를 공백으로 구분된 하나의 문자열로 결합하는 방법이다.
my_list = ['Hello', 'world', '!', 'This', 'is', 'join', 'function']
result = ' '.join(my_list)
print(result)
Hello world ! This is join function
위 예제에서 join() 함수는 my_list의 모든 요소를 공백으로 구분하여 하나의 문자열로 결합한다.
따라서, 주어진 코드에서 ''.join(password)는 password 리스트의 모든 요소를 공백 없이 연결하여 하나의 문자열로 만들어준다.