BOJ 1759パスワードの作成
7283 ワード
https://www.acmicpc.net/problem/1759
2秒、128 MBメモリ
input : L, C (3 ≤ L ≤ C ≤ 15) 文字が空白に分割されます.与えられた文字は小文字で、重複はありません. output : 可能なすべてのパスワードを出力 条件:は、少なくとも1つの母音(a、e、i、o、u)および少なくとも2つの補音からなる である.のパスワードを構成するアルファベットは、パスワードの増加順に 並べられている.
まず入力したアルファベットを子音、母音に分けます.
また,暗号の構成は最低1母音,最低2子音である.
したがって,母音の個数は1より大きくなければならないので,母音リストから複合音を求める場合は,1以上から母音リストの長さに従って抽出しなければならない.
子音については、少なくとも2つが必要であるため、暗号長lは、抽出された母音の個数iを減算し、2以上である.
最後にretを揃えて印刷します.
2秒、128 MBメモリ
input :
まず入力したアルファベットを子音、母音に分けます.
for item in alpha:
if item in ('a', 'e', 'o', 'i', 'u'):
a.append(item)
else:
b.append(item)
やっぱりinは気持ちいいまた,暗号の構成は最低1母音,最低2子音である.
したがって,母音の個数は1より大きくなければならないので,母音リストから複合音を求める場合は,1以上から母音リストの長さに従って抽出しなければならない.
子音については、少なくとも2つが必要であるため、暗号長lは、抽出された母音の個数iを減算し、2以上である.
for i in range(1, len(a) + 1):
for mouem in combinations(a, i):
if l - i >= 2:
for jauem in combinations(b, l - i):
temp = mouem + jauem
temp = sorted(temp)
temp = "".join(temp)
ret.add(temp)
そしてretはsetにして、繰り返さないようにします.最後にretを揃えて印刷します.
import sys
from itertools import combinations
l, c = map(int, sys.stdin.readline().split())
alpha = list(sys.stdin.readline().split())
a = []
b = []
ret = set()
for item in alpha:
if item in ('a', 'e', 'o', 'i', 'u'):
a.append(item)
else:
b.append(item)
for i in range(1, len(a) + 1):
for mouem in combinations(a, i):
if l - i >= 2:
for jauem in combinations(b, l - i):
temp = mouem + jauem
temp = sorted(temp)
temp = "".join(temp)
ret.add(temp)
ret = sorted(ret)
for i in ret:
print(i)
Reference
この問題について(BOJ 1759パスワードの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@jsin2475/BOJ-1759-암호-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol