[백준 문제] 1759번 암호 만들기 - 재귀함수 사용 (파이썬)
- 자음 2개 모음 1개인지 check하는 함수
- 재귀함수를 사용해서 모든 경우의 수를 뽑아내는 함수
를 만들어서 문제를 풀 수 있다.
# 자음 2개 모음 1개를 쓰면 True 아니면 False를 내뱉음
def check(password) :
ja = 0
mo = 0
for x in password :
if (x == 'a' or x == 'e' or x == 'i' or x == 'o' or x == 'u') :
mo += 1;
else :
ja += 1
if ja >= 2 and mo >=1 :
return True
else :
return False
# 체크 함수가 True가 나오면 프린트해주고, 알파벳 다 쓰면 return, 재귀함수 2가지를 써서, 알파뱃을 쓴경우와 안쓴경우를 모두 시행
def go(n, alpha, password, i) :
if len(password) == n :
if check(password) is True :
print(''.join(password))
return;
if (i >= len(alpha)) :
return;
go(n, alpha, password+list(alpha[i]), i+1);
go(n, alpha, password, i+1);
# 입력 및 솔팅(그래야 순서대로 나옴), 함수 사용
n, c = map(int, input().split())
alpha_first = list(map(str, input().split()))
alpha_first.sort()
password = []
i = 0
go(n,alpha_first, password, i)
4 6
a t c i s w
acis
acit
aciw
acst
acsw
actw
aist
aisw
aitw
astw
cist
cisw
citw
istw