[백준] 암호 만들기

이정연·2023년 3월 31일
0

CodingTest

목록 보기
138/165

암호 만들기


https://www.acmicpc.net/problem/1759

설계

if __name__ == '__main__':
    L,C = map(int,input().split())
    alphas = input().split()
    str_lst = list(comb(alphas,L))
    for i in range(len(str_lst)):
        str_lst[i] = sorted(str_lst[i])
    str_lst = check_moeum_jaeum(str_lst)
    for i in range(len(str_lst)):
        str_lst[i] = ''.join(list(str_lst[i]))
    for answer in sorted(str_lst):
        print(answer)
  1. 주어진 문자열에서 L개의 조합 리스트를 구한다.
  2. 문자열을 오름차순 정렬한다.
  3. 문자열 중에서 자음이 2개 이상, 모음이 1개 이상인 것들만 남긴다.
  4. combinations 모듈의 반환값은 ('a','b','c','d')와 같이 튜플이기 때문에 string으로 바꿔준다. 'abcd' 이렇게.
  5. 사전순으로 출력한다.

check_moeum_jaeum

def check_moeum_jaeum(str_lst):
    temp = []
    for i in range(len(str_lst)):
        moeum,jaeum = 0,0
        for j in range(len(str_lst[i])):
            if str_lst[i][j] in {'a','e','i','o','u'}:
                moeum += 1
            else:
                jaeum += 1
        if moeum >= 1 and jaeum >= 2:
            temp.append(str_lst[i])
    return temp
  • input: 사용가능한 문자 중 L개를 뽑아 만든 문자열들
  • output: 그 문자열들 중에서 자음 2개 이상, 모음 1개 이상인 문자열들

전체 코드

import sys
from itertools import combinations as comb
input = sys.stdin.readline

def check_moeum_jaeum(str_lst):
    temp = []
    for i in range(len(str_lst)):
        moeum,jaeum = 0,0
        for j in range(len(str_lst[i])):
            if str_lst[i][j] in {'a','e','i','o','u'}:
                moeum += 1
            else:
                jaeum += 1
        if moeum >= 1 and jaeum >= 2:
            temp.append(str_lst[i])
    return temp

if __name__ == '__main__':
    L,C = map(int,input().split())
    alphas = input().split()
    str_lst = list(comb(alphas,L))
    for i in range(len(str_lst)):
        str_lst[i] = sorted(str_lst[i])
    str_lst = check_moeum_jaeum(str_lst)
    for i in range(len(str_lst)):
        str_lst[i] = ''.join(list(str_lst[i]))
    for answer in sorted(str_lst):
        print(answer)
profile
0x68656C6C6F21

0개의 댓글