백준 1759번: 암호 만들기

반응형
SMALL

이것도 조합 문제이다. 입력된 수와 조건을 바탕으로 해당하는 암호들만 출력해주면 되는 문제이다.

import sys
from itertools import combinations
lst1=[]
input = sys.stdin.readline
l, c = map(int, input().split())
clist = list(input().split())
lst=list(combinations(clist,l))
for i in lst:
    lst1.append(sorted(i))

lst1.sort()

[print("".join(i)) for i in lst1]

처음에는 itertools 라이브러리로 모든 조합의 경우들을 list에 담아둔후, 오름차순을 해주려고 했다. 근데  최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성 조건이 실행이 안되어서 다른 방법으로 풀었다.

 

import sys
from itertools import combinations
lst1=[]
input = sys.stdin.readline
l, c = map(int, input().split())
clist = list(input().split())
lst=list(combinations(clist,l))
for i in lst:
    lst1.append(sorted(i))

lst1.sort()
lst2=["".join(i)for i in lst1 if any(char in i for char in "aeiou")]
for i in lst2:
    cou = 0
    for ch in i:
        if ch in ['a','e','o','u','i']:
            cou=cou+1
    if len(i)-cou>=2:
        print(i)

이런식으로 모음의 갯수를 조건문에 달아서 풀어주었다. any는 Python의 내장 함수로, 주어진 iterable (반복 가능한 객체) 안에 하나라도 참 (True) 값이 있는지 검사한다. any 함수는 iterable 안의 요소들 중 하나라도 참이면 True를 반환하고, 모두 거짓 (False) 이면 False를 반환한다.

 

 

반응형
LIST

'알고리즘 > 백준' 카테고리의 다른 글

백준6603: 로또  (0) 2024.08.05
백준1256번: 사전  (0) 2024.08.05
백준 11051번: 이항 계수 2  (0) 2024.07.08
백준 2407번: 조합  (0) 2024.07.08
백준 10819번: 차이를 최대로  (0) 2024.05.26