https://www.acmicpc.net/problem/1759
#1759: 비밀번호 만들기
두 개의 정수 L과 C가 첫 번째 줄에 주어집니다.
(3 ≤ L ≤ C ≤ 15) 다음 줄에는 C 문자가 공백으로 구분되어 지정됩니다.
주어진 문자는 알파벳의 소문자이며 겹치지 않습니다.
www.acmicpc.net
from itertools import combinations
alphabet = set((chr(i) for i in range(ord('a'), ord('z')+1)))
vowels = ('a', 'e', 'i', 'o', 'u')
consonants = list(alphabet - set(vowels))
l, c = map(int, input().split())
passwords = sorted(list(map(str, input().split())))
results = ()
for password in combinations(passwords, l):
vowel_count = 0
cons_count = 0
for c in password:
if c in vowels:
vowel_count += 1
continue
if c in consonants:
cons_count += 1
if vowel_count >= 1 and cons_count >= 2:
results.append(''.join(password))
for result in results:
print(result)
들어가기 전에 2 초기화 변수했다.
- 모음 : 목록, 모음
- 자음: 목록, 자음
주어진 입력을 받은 후 sorted()
함수를 통해 얻은 문자 정렬했다.
다음 itertools
~에서 combinations
모듈의 사용 l
개 소문자의 가능한 모든 조합찾다
가능한 암호를 통해 반복 password
교육 알파벳 모음만약에 vowel_count
붓다 +1
그리고 자음이라면 cons_count
붓다 +1
그래서
password
가다 다중 모음과 자음으로 구성되어 있는지 확인하다.
password
모든 알파벳 확인 password
다음 조건이 충족될 때 results
에 추가합니다.
vowel_count >= 1
: 적어도 하나의 컬렉션으로 구성cons_count >= 2
: 최소 2개의 자음으로 구성
results
목록 항목을 하나씩 인쇄하여 문제를 해결하십시오.하다.