1. 문제
https://www.acmicpc.net/problem/1759
2. 접근 방법
주어진 C개의 문자 중 L개의 문자를 골랐을 때,
확인해야할 것은
1. 최소 한 개의 모음을 가지고 있는가
2. 최소 두 개의 자음을 가지고 있는가
3. 증가하는 순서인가
이다.
일단 3을 만족시키기 위해,
input받은 문자들을 정렬시켰다.
정렬 시킨 후 L개의 문자를 고르도록 한다.
(이렇게 되면 사전 순서가 지켜지니까)
그리고 나서 C개의 문자를 골랐다면 1, 2번을 만족하는지 확인한다.
3. 코드
python
def isPassword(word):
vowels = ['a', 'e', 'i', 'o', 'u']
v_cnt = 0
for i in word:
if i in vowels:
v_cnt += 1
c_cnt = len(word)-v_cnt
if v_cnt < 1 or c_cnt < 2:
return False
return True
def func(s, cnt):
global L, C, word, answer
if cnt == L:
if isPassword(word):
answer.append(word)
return
for i in range(s, C):
word += inputs[i]
func(i+1, cnt+1)
word = word[:-1]
L, C = map(int, input().split())
inputs = list(input().split())
inputs.sort()
vowels = ['a', 'e', 'i', 'o', 'u']
consonant = []
word = ''
answer = []
func(0, 0)
print(*answer, sep="\n")
4. 마치며
마치며~!
'Algorithm > Python' 카테고리의 다른 글
[LeetCode] 344. Reverse String (0) | 2021.06.01 |
---|---|
[LeetCode] 125. Valid Palindrome (0) | 2021.06.01 |
[백준 11723] 집합 (1) | 2021.05.26 |
[백준 10819] 차이를 최대로 (0) | 2021.05.25 |
[프로그래머스] 주식가격 (0) | 2021.05.20 |