[python]伯準/gold/1759:パスワードの作成
質問リンク:https://www.acmicpc.net/problem/1759
バックグラウンドトラッキングの問題ですが、Python itertoolsモジュールの組合せクラスを使うと問題が解決しやすくなります.しかし、背もたれを練習するために、両方の方法で練習した.
でもどう見ても組み合わせで解決したほうがいい時間効率も約2倍に向上した.
コンポジットコード
バックグラウンドトラッキングの問題ですが、Python itertoolsモジュールの組合せクラスを使うと問題が解決しやすくなります.しかし、背もたれを練習するために、両方の方法で練習した.
でもどう見ても組み合わせで解決したほうがいい時間効率も約2倍に向上した.
コンポジットコード
import sys
from itertools import combinations
L, C = map(int, sys.stdin.readline().split())
alphabet = list(sys.stdin.readline().split())
alphabet.sort()
combis = list(combinations(alphabet, L))
a = ['a', 'e', 'i', 'o' ,'u'] # 모음
for comb in combis:
jaEum = 0
moEum = 0
result = ''
for c in comb:
if c in a:
moEum += 1
else:
jaEum += 1
result += c
if moEum >= 1 and jaEum >= 2:
print(result)
トレースバックコードimport sys
sys.setrecursionlimit(10**6)
L, C = map(int, sys.stdin.readline().split())
alphabet = list(sys.stdin.readline().split())
mo = ['a', 'e', 'i', 'o', 'u'] # 모음
alphabet.sort()
def check(word):
moEum = 0
jaEum = 0
for w in word:
if w in mo:
moEum += 1
else:
jaEum += 1
return moEum, jaEum
def dfs(idx, word):
word += alphabet[idx]
result = check(word)
if len(word) == L:
if result[0] >= 1 and result[1] >= 2:
print(word)
return
for i in range(idx+1, C):
dfs(i, word)
for x in range(C):
dfs(x, "")
Reference
この問題について([python]伯準/gold/1759:パスワードの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@heyksw/Python-백준-gold-1759-암호-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol