본문 바로가기
Problem Solving/Baekjoon(BOJ)

[ BOJ ] 1759 암호만들기 - python 문제풀이

by IM조이 2021. 7. 19.

1759 암호만들기

접근 : 재귀로 문자열 조합 만들어가면서 지정한 길이(L) 만큼의 문자열을 완성했을 때 조건을 만족하면 결과에 추가, 아니면 중단

풀이방법
- 일단 먼저 알파벳 정렬
- 인덱스를 0부터 1씩 증가시키면서 재귀로 들어가기
- 마지막에 매번 모음, 자음 카운트 계산하지 않고, 모음 자음 개수 정보를 함께 넘겨주기

def make(s,mo,ja,idx):
    global stack
    if len(s) == L:
        if mo>=1 and ja>=2:
            print(s)
        return
    for i in range(idx,C):
        if al[i] in ['a','e','i','o','u']:
            make(s+al[i],mo+1,ja,i+1)
        else:
            make(s+al[i],mo,ja+1,i+1)

L,C = map(int, input().split())
al = list(input().split())
al.sort()
make('',0,0,0)

계속 출력초과 에러가 나서 봤더니, 예시 테스트케이스에 L이 4였던 걸 종료 조건(len(s)==4)으로 설정해버렸던게 원인.

댓글