728x90
L, C = map(int, input().split())
char = input().split()
char.sort()
def comb(index=0, arr=[], limit=L):
if index == limit:
vowel = {'a','e','i','o','u'}
vow, con = 0, 0
for i in range(limit):
if arr[i] in vowel:
vow += 1
else:
con += 1
if vow < 1 or con < 2: return
print(''.join(arr))
else:
for i in range(index, C):
if arr and ord(arr[-1]) >= ord(char[i]): continue
comb(index+1, arr+[char[i]])
comb()
조합 알것같으면서도 잘 모르겠다
그리고 문제를 제대로 안읽어서 여러번 틀렸다.
조합에 쓰이는 알파벳이 오름차순으로 순서이어야하고, 자음과 모음의 최소 개수를 파악해야했다.
백트래킹으로 뚝딱뚝딱 하다보니 완성
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 2589 보물섬 (0) | 2021.03.08 |
---|---|
[백준] 2468 안전영역 (0) | 2021.03.06 |
[백준] 3980 선발명단 (1) | 2021.03.05 |
[백준] 6603 로또 (0) | 2021.03.04 |
[백준] 2583 영역구하기 (0) | 2021.03.04 |