만들어야 할 암호의 문자 수 L
주어질 문자들의 개수 C
즉 C개의 문자들 중에서 L개를 뽑아야 하는데, 조건이 있다
바로 최소 한 개의 모음과 최소 두개의 자음으로 구성되어야 한다. 라는 것
따라서 이 문제를 푸는 방법을 생각해보자면
1. C개의 문자에서 L개를 뽑는다 -> 조합 -> itertools의 combinations를 사용
2. 추가 조건을 만족시키기 위해 combinations의 결과값을 if로 걸러준다.
from itertools import combinations
vowels = ('a', 'e', 'i', 'o', 'u')
l, c = map(int, input().split())
array = input().split(' ')
array.sort()
for password in combinations(array, l): # l개 만큼의 비밀번호 후보군을 생성
vowel_count = 0
for i in password:
if i in vowels:
vowel_count += 1
if 1 <= vowel_count <= l - 2: # 해당 후보군이 조건에 맞는지 판단 (자음/모음개수)
print(''.join(password)) # join 함수로 출력 형식 맞춰주기.
'백준 알고리즘 (Baekjoon Algorithm)' 카테고리의 다른 글
[파이썬] 백준 알고리즘 No.1946 신입 사원 (0) | 2021.12.05 |
---|---|
[파이썬] 백준 알고리즘 No.10610 30 (0) | 2021.12.05 |
[파이썬] 백준 알고리즘 No.2217 로프 (0) | 2021.12.05 |
[파이썬] 백준 알고리즘 No.1026 보물 (0) | 2021.12.04 |
[파이썬] 백준 알고리즘 No.1966 프린터 큐 (0) | 2021.03.07 |