티스토리 뷰
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,[])
'PS' 카테고리의 다른 글
BOJ 17136 색종이 붙이기 (0) | 2022.09.11 |
---|---|
BOJ 2098 외판원 순회 (0) | 2022.08.28 |
BOJ 9466 (텀 프로젝트) (0) | 2021.12.26 |
BOJ 3078 (좋은 친구) (0) | 2021.12.26 |
BOJ 2304 (0) | 2021.11.14 |