[백준 1759] 암호 만들기

Junyoung Park·2022년 2월 28일
0

코딩테스트

목록 보기
125/631
post-thumbnail

1. 문제 설명

암호 만들기

2. 문제 분석

브루트 포스로 가능한 조합의 암호 조합을 모두 만든 뒤, 조건(모음 및 자음 개수)에 맞는다면 출력한다.

  • 처음에는 순열(permutations)로 하나씩 케이스를 만들었는데, 이후 조합으로도 충분히 케이스를 커버할 수 있음을 깨달았다.

3. 나의 풀이

from itertools import combinations

l, c = map(int, input().split())
alphas = list(input().split())
alphas.sort()

cases = list(combinations(alphas, l))
# 주어진 알파벳 중 l개를 사용한 조합. 정렬된 암호는 이 cases의 case를 정렬한 문자열에서 선택한다.

for case in cases:
    vowel_cnt = 0
    consonant_cnt = 0
    for alphabet in case:
        if alphabet in ['a', 'e', 'i', 'o', 'u']:
            vowel_cnt += 1
        else: consonant_cnt += 1
    # 해당 알파벳 조합의 모음, 자음 개수를 각각 카운트
    if vowel_cnt >=1 and consonant_cnt >= 2: print(''.join(sorted(case)))
    # 조건이 맞다면 정렬된 (즉 암호 조건에 맞는) 문자를 출력한다.
profile
JUST DO IT

0개의 댓글