[BOJ 1759] 암호 만들기(Python)

문제

암호 만들기


문제 해설

주어진 알파벳들을 조합해 정렬하는 문제입니다.
모음이 최소 하나, 자음이 최소 두개인 것을 인지하고 풀어야합니다.

정규 표현식을 이용해 문제를 풀 수도 있어 첨부합니다.


풀이 코드

from itertools import combinations

answer = []
l, c = map(int, input().split())

for com in combinations(list(map(str, input().split())), l):
    cnt = 0
    for ch in com:
        if ch in "aeiou":
            cnt += 1
    # 모음이 최소 하나, 자음이 최소 두개
    if cnt >= 1 and l - cnt >= 2:
        answer.append("".join(sorted(com)))
for ans in sorted(answer):
    print(ans)

정규 표현식을 이용한 풀이

from itertools import combinations
import re

answer = []
l, c = map(int, input().split())

for com in combinations(list(map(str, input().split())), l):
    # 모음만 저장
    arr = re.findall("[aeiou]", "".join(com))
    if len(arr) >= 1 and l - len(arr) >= 2:
        answer.append("".join(sorted(com)))

for x in sorted(answer):
    print(x)

좋은 웹페이지 즐겨찾기