Kim Seon Deok
[백준] 1759 암호만들기 본문
https://www.acmicpc.net/problem/1759
1. 생성할 암호 길이l 과 t=사용한 알파벳 갯수c 를 입력받음
2. 길이가 c이면서 오름차순인 리스트 word
3. 모음 a e i o u를 저장한 리스트 m
4. 리스트 내에서 자음과 모음의 갯수를 세리는 함수 cnt
5. combination 함수를 이용해 word리스트에서 c 개만 골라 만들어질 수 있는 모든 경우를 생성
6. 모음이 1개 이상, 자음이 2개 이상인 것들만 저장하는 리스트 finals
from itertools import combinations
l,c = map(int,input().split()) # l : 암호길이(1모음, 2 자음) c: 사용한 알파벳 갯수(이중 ㅣ개를 조합)
word = sorted(list(map(str,input().split()))) #오름차순으로 정렬
m = ['a','e','i','o','u']
def cnt(password): #튜플을 인자로 받음, 모음 자음 갯수를 원소로 하는 리스트 반환
result = []
mm = 0 # 모음 갯수
zz = 0 # 자음 갯수
for i in range(l):
if password[i] in m:
mm += 1
else:
zz += 1
result.append(mm)
result.append(zz)
return result
example = list(combinations(word,l)) # 모든 경우
final = [] # 모든 경우를 cnt함수에 넣은 결과가 들어간 리스트
for i in range(len(example)):
final.append(cnt(example[i]))
finals = [] # 모음이 1개이상, 자음이 2개 이상인 조건을 만족하는 경우를 저장하는 리스트
for i in range(len(final)):
if final[i][0] >= 1 and final[i][1] >= 2:
finals.append(list(example[i])) # 튜플을 리스트로 변경
for i in range(len(finals)):
print("".join(finals[i]))
'python > Algorithm' 카테고리의 다른 글
[백준] 17371 이사 (0) | 2022.02.01 |
---|---|
[백준] 5397 키로거 (0) | 2022.01.31 |
[백준] 2503 숫자 야구 (0) | 2022.01.28 |
[백준] 14889 스타트와 링크 (0) | 2022.01.26 |
[백준] 20436 ZOAC 3 (0) | 2022.01.22 |
Comments