본문 바로가기
알고리즘

[알고리즘] 암호 만들기

by keel_im 2021. 6. 10.
반응형

포인트

  • 백트랙킹을 이용하여서 암호를 조합하는 문제 입니다. 문제 조건에서는 모음 1개 자음 2개 이상을 조건으로 갖고 있어 이를 해결하기 위해 재귀함수의 파라미터로 정의하여 사용하였습니다. 

🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다. 

python

n, m = map(int, input().split())
data = input().split()
data.sort()
answer = set()
sel = []


def go(index: int, cnt: int, one: int, two: int) -> None:
    global answer
    if cnt == n:
        if one >= 1 and two >= 2:
            answer.add(''.join(sel))
        return

    if index >= len(data):
        return
    sel.append(data[index])
    if data[index] in 'aeiou':
        go(index + 1, cnt + 1, one + 1, two)
    else:
        go(index + 1, cnt + 1, one, two + 1)
    sel.pop()

    go(index + 1, cnt, one, two)


go(0, 0, 0, 0)
for ele in sorted(list(answer)):
    print(ele)
반응형

댓글