[백준/파이썬] 1759번 암호 만들기 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 1759번 암호 만들기
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
주어진 문자들로 길이 L의 암호를 만들 때,
오름차순 정렬이고 모음 1개 이상/자음 2개 이상 조건을 만족하는
모든 암호를 출력하는 문제입니다.
코드
l, c = map(int, input().split())
string = input().split()
string.sort()
mo = ('a', 'e', 'i', 'o', 'u')
answers = set()
def create(i, m_cnt, z_cnt, created):
if m_cnt+z_cnt >= l:
if m_cnt >= 1 and z_cnt >= 2:
answers.add(created)
return
if i >= c:
return
if string[i] in mo:
create(i+1, m_cnt+1, z_cnt, created+string[i])
else:
create(i+1, m_cnt, z_cnt+1, created+string[i])
create(i+1, m_cnt, z_cnt, created)
create(0, 0, 0, "")
print('\n'.join(map(str, sorted(list(answers)))))
설명
문자를 정렬한 뒤 재귀적으로 선택/비선택 분기를 타며 길이 L 조합을 생성합니다.
완성된 문자열에서 모음/자음 조건을 검사해 저장하고, 마지막에 정렬해 출력합니다.
댓글남기기