[백준 / 1759] 암호 만들기
in Problem Solving on BaekJoon
날짜: 2021년 10월 14일
소요 시간: 37분 45초
카테고리: 순열조합
태그: Gold.5
, 1759
, 파이썬
입출력 예시
링크 참조
내가 적은 코드
import itertools
import sys
L, C = map(int, sys.stdin.readline().split())
words = sys.stdin.readline().split()
answer = list()
vowel = ['a', 'e', 'i', 'o', 'u']
for i in itertools.combinations(sorted(words), L):
answer.append("".join(i))
for word in answer:
count = 0
for j in word:
if j in vowel:
count += 1
if len(word) >= count * 2 and count > 0:
print(word)
풀이 과정
words
의 단어들을 조합하여 나올 수 있는 경우를 answer
에 저장
answer
의 원소들 중
모음이 한개 이상인 것 (vowel
의 원소를 하나라도 가지고 있는지)
자음이 두개 이상인 것 (단어의 길이의 절반 이상이 vowel
의 원소의 갯수보다 같거나 많은지)
를 체크한 후 기준에 맞는 원소를 출력
베스트 코드
from itertools import combinations
l, c = map(int,input().split())
alpha = sorted(list(input().split()))
candidate = list(combinations(alpha,l))
for candi in candidate:
num_v = 0
num_c = 0
for c in candi:
if c in "aeiou":
num_v +=1
else:
num_c +=1
if num_v >=1 and num_c>=2:
print(''.join(candi))