백준 1759 파이썬

문제

암호만들기

백준 14503

풀이

조건:
1. 암호의 알파벳은 오름차순이다.
2. 모음 1개이상, 자음 2개이상이다.
3. 길이는 L이다.
가능한 종류는 백트래킹으로 전부 찾아낸다.

# 암호만들기 

mo_list=['a','e','i','o','u']
     
    
L,C=map(int,input().split())

# L 은 암호길이
# C 는 사용 문자 종류
alpha=list(input().split())
alpha.sort()

# 모음 갯수 , 자음 갯수 
def make_pwd(mo,ja,pwd,pwd_len,last_idx):
    
    if mo>=1 and ja>=2 and len(pwd)==pwd_len:
        # 모음 개수 1 이상, 자음 개수 2이상, 암호문 길이가 L일 때 
        print(pwd)
        return 

    for c in range(last_idx+1,len(alpha)):
        if alpha[c] in mo_list:
            
            make_pwd(mo+1,ja,pwd+alpha[c],pwd_len,c)
        if alpha[c] not in mo_list:
            
            make_pwd(mo,ja+1,pwd+alpha[c],pwd_len,c)

# 초기 
for i in range(len(alpha)):
    if alpha[i] in mo_list:
        make_pwd(1,0,alpha[i],L,i)
    else:
        make_pwd(0,1,alpha[i],L,i)

결과

좋은 웹페이지 즐겨찾기