1759번: 암호 만들기
첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.
www.acmicpc.net
# 암호만들기
# https://www.acmicpc.net/problem/1759 (백트래킹)
import re
def recursive(chars, res, a="", idx=0):
if len(a) == L:
co = re.sub("[aeiou]", "", a) # 자음
vo = re.sub("[^aeiou]", "", a) # 모음
if len(co) >= 2 and len(vo) >= 1:
res.append(a[:])
return
for i in range(idx, C):
ch = chars[i]
if ch not in a: # 가지치기 (이미 선택된 문자 제외)
a += ch
recursive(chars, res, a, i + 1)
a = a[:-1]
L, C = map(int, input().split())
chars = input().split()
chars.sort()
res = []
recursive(chars, res)
[print(x) for x in res]
'BOJ 알고리즘 (패캠) > 탐욕, 백트래킹' 카테고리의 다른 글
1987번: 알파벳 (백트래킹) (0) | 2020.12.02 |
---|---|
9663번: N-Queen (백트래킹) (0) | 2020.10.25 |
1781번: 컵라면 (탐욕) (0) | 2020.10.24 |
1461번: 도서관 (탐욕) (0) | 2020.10.23 |
2212번: 센서 (탐욕) (0) | 2020.10.23 |