오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-21 00:00
관리 메뉴

우노

[String] 백준 1759번 “암호 만들기” Python 풀이 본문

Algorithm/String

[String] 백준 1759번 “암호 만들기” Python 풀이

운호(Noah) 2022. 10. 3. 22:54

문제 링크

풀이

  • 사용할 문자들을 입력 받아, 모음과 자음 리스트에 추가합니다.
  • i를 1부터 l-2까지 증가시키며,
  • 모음 리스트에서 i개의 모음을 뽑는 조합과 자음 리스트에서 l-i개의 자음을 뽑는 조합을 생성합니다.
  • 이후, 모음 조합과 자음 조합의 각 요소들을 결합한 뒤, 정렬하고, 결과 리스트에 추가합니다.
  • 알고리즘에 대한 세부 설명은 아래 코드와 같습니다.

코드

import sys
from itertools import combinations

# 결과 문자열 길이 l과 알파벳 개수 c
l, c = map(int, sys.stdin.readline().split())

# 모음 전체
temp = ['a', 'e', 'i', 'o', 'u']

# 모음 리스트
a = []
# 자음 리스트
b = []

# 문자들을 입력 받아, 모음과 자음 리스트에 추가
chars = sys.stdin.readline().split()
for char in chars:
    if (char in temp):
        a.append(char)
    else:
        b.append(char)

# 결과 리스트
result = []

# 모음이 i개일때, 자음은 l-i개 뽑기
for i in range(1, l-1):

    # 모음 조합
    a_combi = list(combinations(a, i))
    # 자음 조합
    b_combi = list(combinations(b, l-i))

    # 모음 조합과 자음 조합을 결합한 뒤, 정렬하고, 결과 리스트에 추가
    for j in a_combi:
        for k in b_combi:
            result.append(''.join(sorted(j + k)))

# 결과 리스트 정렬
result = sorted(result)

# 결과 리스트 요소 출력
for word in result:
    print(word)
Comments