[백준 문제] 1759번 암호 만들기 - 재귀함수 사용 (파이썬)


[백준 문제] 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





© 2018. by statssy

Powered by statssy