[ Contents ]
1. 문제 (링크 참조)
10819번: 차이를 최대로
첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다.
www.acmicpc.net
2. 문제 풀이
암호는 "오름차순"으로 서로 다른 L개의 알파벳 소문자들로 구성되며, 최소 한 개의 모음(a, e, i, o, u)과 최소 두개의 자음으로 구성되어 있습니다. 입력은 암호의 길이인 L과 사용 가능한 알파벳이 주어집니다. 단순히 길이가 L인 알파벳 나열이므로, 브루트 포스 접근법으로 풀이합니다.
2022.01.16 - [Algorithm] - [Algorithm] 브루트 포스(Brute Force)는 노가다 기법?
[Algorithm] 브루트 포스(Brute Force)는 노가다 기법?
1. 브루트 포스란? Brute(짐승 같은, 난폭한) + Force(힘, 폭력)의 합성어입니다. 무식하게 푸는 기법으로, '노가다'에 가까운 접근법입니다. 모든 경우의 수를 시험해보며 문제를 해결합니다. 브루
star7sss.tistory.com
오름차순으로 정렬되므로, 순서가 없는 '조합'으로 경우의 수를 구합니다.
3. 코드
from itertools import combinations
L, C = map(int, input().split())
alphabet = list(input().split())
alphabet.sort()
arr = list(combinations(alphabet, L))
answer = list()
for lst in arr:
vowels = 0
consonants = 0
for i in lst:
if (i=='a') | (i=='e') | (i=='i') | (i=='o') | (i=='u'):
vowels += 1
else:
consonants += 1
if (vowels > 0) & (consonants > 1):
answer.append(''.join(lst))
for i in answer:
print(i)
조합(Combinataion)을 사용하기 위해, 파이썬 라이브러리 itertools를 이용합니다.
itertools.combinations(lst, n): lst 리스트에서 n개를 뽑는 조합
L개의 앞파벳 조합 중, 최소 1개의 모음과 2개의 자음으로 구성된 배열만 오름차순으로 출력합니다.
'Algorithm' 카테고리의 다른 글
[Algorithm] 단골 1번 문제, 구현 / 수학 (0) | 2022.01.19 |
---|---|
[Brute Force] 백준 1182. 부분수열의 합 - Python (0) | 2022.01.18 |
[Brute Force] 백준 10819. 차이를 최대로 - Python (0) | 2022.01.17 |
[Algorithm] 브루트 포스(Brute Force)는 노가다 기법? (0) | 2022.01.16 |
[Algorithm] 게시판 소개 (0) | 2022.01.11 |
댓글