[백준] 1759번 암호만들기 - python 파이썬

hyewon9913·2024년 7월 15일

코딩테스트(python)

목록 보기
44/46

문제

이 문제를 보면 주어진 C개의 문자중 조건에 맞는 L개의 조합을 찾는 것이기 떄문에 combinations 를 사용해서 문제를 해결하였다.

이 때 모음의 개수와 자음의 개수 체크는 모음이 담긴 리스트를 만들어서 이를 활용해서 체크해주었다.

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

그리고 조건에 맞는 조합을 저장을 해준 후에 출력값이 사전식으로 정렬이 되어있기 때문에 조합을 저장해둔 리스트안에 요소들을 문자가 각각의 요소로 들어가있는 2차원 배열이 아닌
문자열이 담긴 1차원 배열이 되도록 변환을 해주었다.

answer = []
# 받아놓은 암호의 조합을 문자에서 문자열로 변환해 저장
for a in ans:
    tmp = ''
    for aa in a:
        tmp += aa
    answer.append(tmp)
    
#사전식으로 정렬
answer.sort()

전체 코드

from itertools import combinations

l, c = map(int, input().split())

alpha = list(input().split())

mo = ['a','e','i','o','u']
ans = []

for c in combinations(alpha,l):
    c = list(c)
    
    #모음 포함여부 체크
    mcheck = False
    for m in mo:
        if m in c:
            mcheck = True
    cnt = 0
    #자음 개수 체크
    for cc in c:
        if cc not in mo:
            cnt+=1
    #모음이 1개 이상 포함되어있고 자음의 개수가 2개 이상이면 ans에 추가
    if mcheck and cnt>= 2:
        c.sort()
        ans.append(c)

answer = []
# 받아놓은 암호의 조합을 문자에서 문자열로 변환해 저장
for a in ans:
    tmp = ''
    for aa in a:
        tmp += aa
    answer.append(tmp)
answer.sort()

for a in answer:
    print(a)

L개의 요소중에서 C개의 조합을 고르는데 이때 조건이 2개가 있어서 살짝 복잡했던 문제였던 것 같다.

그래도 combinations 를 잘 활용하면 비교적 쉽게 해결할 수 있었다.
이런 기본 라이브러리들을 잘 활용할 줄 아는 것이 중요한 것 같다.

profile
차근차근 굴러가는 코딩일지

0개의 댓글