PS
BOJ 1759 암호 만들기
plr3270
2022. 9. 4. 15:09
1759번: 암호 만들기
첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.
www.acmicpc.net
\(C\) 개의 알파벳이 주어졌을 때, 모음이 1개 이상, 자음이 2개 이상 포함된 크기 \(L\)의 가능한 모든 조합을 구하는 문제. 모든 경우의 수를 출력해야 하기 때문에, 백트래킹으로 풀 수 있으며 시간제한은 넉넉하다.
더보기
l,c = map(int,input().split())
c = sorted(input().split())
def f(flag,n,m,ls):
if len(ls) == l:
if flag == 0 or m < 2:
return 0
return print(*ls,sep='')
for i in range(n,len(c)):
if 'aeiou'.find(c[i]) != -1:
f(1 | flag, i+1,m, ls+[c[i]])
else:
f(flag,i+1,m+1,ls+[c[i]])
f(0,0,0,[])