728x90
[백준알고리즘] 1759번: 암호 만들기 -Python
https://www.acmicpc.net/problem/1759
itertools 모듈의 combinations 메서드를 사용해서 쉽게 주어진 알파벳의 조합 쌍을 만들 수 있었다.
combinations를 사용하지 않는 경우 조합을 만들기 위해서는 DFS방식처럼 하나씩 조합의 길이만큼 원소를 추가해 나가면 된다.
combinations에 넣기 전에 정렬해줌으로써 정렬된 조합의 결과들은 모두 각각 정렬된 상태로 받을 수 있었다.
이 상태에서 set()을 이용해 주어진 조합에서 모음을 제외한 알파벳의 개수를 얻도록 difference()를 사용했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import sys
from itertools import combinations
l, c = map(int, sys.stdin.readline().split())
alpha = sorted(list(sys.stdin.readline().split()))
VOWELS = set('aeiou') # 모음
cm = list(combinations(alpha, l))
cm.sort()
for c in cm:
diff = set(c).difference(VOWELS)
if 1 < len(diff) < l:
print(''.join(c))
continue
|
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 1182번: 부분수열의 합 -Python (0) | 2020.03.11 |
---|---|
[백준알고리즘] 1987번: 알파벳 -Python (0) | 2020.03.11 |
[백준알고리즘] 5014번: 스타트링크 -Python (0) | 2020.03.10 |
[백준알고리즘] 3108번: 로고 -Python (0) | 2020.03.10 |
[백준알고리즘] 2186번: 문자판 -Python (0) | 2020.03.10 |