반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
암호는 "오름차순"으로 서로 다른 L개의 알파벳 소문자들로 구성되며, 최소 한 개의 모음(a, e, i, o, u)과 최소 두개의 자음으로 구성되어 있습니다. 입력은 암호의 길이인 L과 사용 가능한 알파벳이 주어집니다. 단순히 길이가 L인 알파벳 나열이므로, 브루트 포스 접근법으로 풀이합니다.
2022.01.16 - [Algorithm] - [Algorithm] 브루트 포스(Brute Force)는 노가다 기법?
오름차순으로 정렬되므로, 순서가 없는 '조합'으로 경우의 수를 구합니다.
3. 코드
from itertools import combinations
L, C = map(int, input().split())
alphabet = list(input().split())
alphabet.sort()
arr = list(combinations(alphabet, L))
answer = list()
for lst in arr:
vowels = 0
consonants = 0
for i in lst:
if (i=='a') | (i=='e') | (i=='i') | (i=='o') | (i=='u'):
vowels += 1
else:
consonants += 1
if (vowels > 0) & (consonants > 1):
answer.append(''.join(lst))
for i in answer:
print(i)
조합(Combinataion)을 사용하기 위해, 파이썬 라이브러리 itertools를 이용합니다.
itertools.combinations(lst, n): lst 리스트에서 n개를 뽑는 조합
L개의 앞파벳 조합 중, 최소 1개의 모음과 2개의 자음으로 구성된 배열만 오름차순으로 출력합니다.
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm] 단골 1번 문제, 구현 / 수학 (0) | 2022.01.19 |
---|---|
[Brute Force] 백준 1182. 부분수열의 합 - Python (0) | 2022.01.18 |
[Brute Force] 백준 10819. 차이를 최대로 - Python (0) | 2022.01.17 |
[Algorithm] 브루트 포스(Brute Force)는 노가다 기법? (0) | 2022.01.16 |
[Algorithm] 게시판 소개 (0) | 2022.01.11 |
댓글