[백준 / 1759] 암호 만들기


날짜: 2021년 10월 14일
소요 시간: 37분 45초
카테고리: 순열조합
태그: Gold.5, 1759, 파이썬

백준 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))

반성





© 2021. by hminkim