[Brute force] 백준 1759번 암호 만들기

문제 분석

  • 3 ≤ L ≤ C ≤ 15
    L : 암호의 길이
    C : 주어지는 총 알파벳 갯수
  • 암호는 모음 알파벳(a, e, i, o, u)을 반드시 1개 이상 포함
  • 암호는 자음 알파벳을 반드시 2개 이상 포함
  • 암호는 알파벳 순서대로 정렬
  • 문자들은 알파벳 소문자, 중복되는 것은 없음

핵심 개념

  • 조합을 사용하여 만들 수 있는 모든 문자열조합을 만듦
    Brute Force에서 자주 사용
  • 만들어진 문자열에서 조건을 만족할 경우 출력

풀이 코드

import sys
from itertools import combinations

L, C = map(int, sys.stdin.readline().split())
strs = sorted(sys.stdin.readline().split())

vowels = ['a', 'e', 'i', 'o', 'u']

for combi in combinations(strs,L):
  consonant_count = 0
  is_vowel_in = False

  for c in combi:
    if c in vowels:
      is_vowel_in = True
    else:
      consonant_count += 1

    if is_vowel_in and consonant_count >= 2:
      print(''.join(combi))
      break

좋은 웹페이지 즐겨찾기