BOJ 1759パスワードの作成


質問する


BOJ 1759パスワードの作成
金色V|白準1759|Python 3 Python池

アルゴリズム#アルゴリズム#


すべての長さLの組合せをPython itertoolsライブラリ内蔵関数combinationsとして求め、各要素をソートし、リストもソートします.
生成された組合せ要素には、1つ以上の母音、2つ以上の補音が条件に合致する要素を出力すればよい.
Pythonのitertoolsを使用すると、シーケンスと組合せを非常に容易に求めることができます.

コード#コード#

import sys
import itertools

input = sys.stdin.readline

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

chars = list(input().split())

# 길이가 L인 조합을 정렬해서 리스트로 저장한다
result = (list(map(lambda x : sorted(list(x)), list(itertools.combinations(chars, L)))))

result.sort()

for r in result:
    count = 0
    for rr in r:
    	# 모음의 개수를 센다
        if rr in ['a', 'e', 'i', 'o', 'u']:
            count += 1
            
	# 모음이 1개 이상, 자음이 2개 이상이라면 출력
    if 0 < count < L - 1:
        print(''.join(r))

結果