문제
접근
사전 순으로 정렬한 후 순서에 맞게 중복없이 l개를 선택한다.
이게 정답 후보가 된다.
이제 정답 후보 중에 주어진 규칙인 자음, 모음의 개수를 확인하고 맞는 것을 최종적으로 출력한다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def roleCheck(arr, vowel):
minV = 1
minC = 2
ans = []
for item in arr:
vCnt = 0
cCnt = 0
for s in item:
if s in vowel:
vCnt += 1
else:
cCnt += 1
if vCnt >= minV and cCnt >= minC:
print(item)
def bf(arr, start, l, cnt, password, ans):
if cnt == l:
return password
if start == len(arr):
return False
for i in range(start, len(arr)):
pw = bf(arr, i+1, l, cnt+1, vowel, password + arr[i], ans)
if pw:
ans.append(pw)
vowelList = ['a', 'e', 'i', 'o', 'u']
l, c = map(int, input().split())
arr = list(map(str, input().split()))
arr.sort()
ans = []
start = 0
cnt = 0
password = ''
bf(arr, start, l, cnt, password, ans)
ans = roleCheck(ans, vowelList)