For Programmer

백준 1759번 파이썬 문제풀이(암호 만들기) 본문

코팅테스트/백준 문제 모음

백준 1759번 파이썬 문제풀이(암호 만들기)

유지광이 2022. 2. 27. 23:47
728x90


간단한 dfs 문제이다. 백트래킹 조건만 잘 걸어주면 된다. 백트래킹 조건은 주석으로 달아 놨다.

def dfs(depth, start, password):
    if depth == L:
        vowel_count = 0  # 모음 개수 저장
        for i in password:  # 만들어진 password를 돈다
            if i in 'aeiou':  # 만약 해당 문자열에 모음이 있다면
                vowel_count += 1  # 모음 개수 +1
        if vowel_count <= 0 or vowel_count >= L - 1:  # 만약 모음개수가 0이거나, 길이-1개 이상이라면
            return  # 자음이 최소 2개 이상 있거나, 모음이 최소 1개 이상 없으므로 재귀 종료
        print(password)  # 그 외경우 password 출력하고
        return  # 재귀 종료

    for i in range(start, C):
        dfs(depth + 1, i + 1, password + pw[i])


L, C = map(int, input().split())
pw = list(input().split())

pw.sort() #알파벳 순으로 정렬한다.
dfs(0, 0, '')
728x90
Comments