백준1759(파이썬) - 암호만들기
resilient
·2021. 7. 16. 13:03
728x90
반응형
https://www.acmicpc.net/problem/1759
- 먼저 이 문제 입력값의 최대가 15이기 때문에 combinations를 쓸 수 있겠다고 생각했다.
- 모음 집합을 만들어서 나중에 모음이거나 자음이거나를 판별할때 set자료형을 사용했다.
- 암호는 순서대로 만들어지므로, data를 정렬해준다.
- function 함수를 만들어서 변수로 들어오는 password에서 모음을 제외한 set자료형인 except_vowel_password를 만들어줬고 password에 어떤 모음이 들어 있는지를 알기 위해 &를 사용해서 교집합인 원소를 구한뒤 intersection_vowel_password에 담아주었다.
- 그 이후로 최소 한개의 모음과 2개의 자음이 들어가야 하므로 만약에 이 갯수가 충족되지 않을 시, flag를 1로 변경해준다.
- 주어지는 입력값인 data로 combinations를 사용해서 조합을 구해주고 function의 변수로 넣어주고 그 값(함수의 return 값인 flag값)이 0일경우(충족될경우) 출력을 해주면된다.
import sys
from itertools import combinations
input = sys.stdin.readline
l,c = map(int,input().split())
data = list(input().split())
vowel = {"a","e","i","o","u"}
data.sort()
def function(password):
except_vowel_password = set(password) - vowel
intersection_vowel_password = set(password) & vowel
flag = 0
if len(except_vowel_password) < 2 or len(intersection_vowel_password) <1:
flag = 1
return flag
for comb in combinations(data,l):
if function(comb) == 0:
print(''.join(comb))
반응형
'자료구조 & 알고리즘 > 백준(Baekjoon)' 카테고리의 다른 글
[백준]1058(파이썬) - 친구 (0) | 2021.07.19 |
---|---|
백준6064(파이썬) - 카잉 달력 (0) | 2021.07.18 |
백준10972(파이썬) - 다음 순열 (0) | 2021.07.15 |
백준14500(파이썬) - 테트로미노 (0) | 2021.07.14 |
백준10819(파이썬) - 차이를 최대로 (0) | 2021.07.12 |