[문제] 백준 알고리즘 1759 (암호 만들기)
> https://www.acmicpc.net/problem/1759
N과 M의 연장선에 있는 문제이다. C와 L로 이름만 바뀌었다.
조건은 최소 1개의 모음과 2개의 자음으로 구성된 암호이고,
사전식으로 가능성 있는 암호를 모두 출력하는 문제이다.
1. 먼저 얻은 배열을 sort() 한다. (문자열 순으로도 됨) L자리의 암호 얻기 위해서 DFS를 적용,
이 때 idx를 i+1을 넘겨주어 사전식으로 가능한 것들만 출력용 배열에 stack 한다.
2. 출력용 배열에서 1개 이상의 모음 / 2개 이상의 자음을 검사하여 print 한다.
[Code]
L, C = map(int, input().split())
alpha = list(map(str, input().split()))
out = []
all_out = []
alpha.sort()
def solve(depth, idx, L, C):
if depth == L:
all_out.append(''.join(map(str, out)))
return
for i in range(idx, C):
out.append(alpha[i])
solve(depth+1, i+1, L, C)
out.pop()
def password(list_check):
for i in list_check:
cons = 0
vow = 0
for j in i:
if j in 'aeiou':
cons += 1
else:
vow += 1
if cons >= 1 and vow >= 2:
print(i)
return
solve(0, 0, L, C)
password(all_out)
728x90
'백준 알고리즘(BOJ)' 카테고리의 다른 글
백준 알고리즘 1929 (소수 구하기) - python (0) | 2019.10.16 |
---|---|
백준 알고리즘 13460 (구슬 탈출 1,2) - python (2) | 2019.10.16 |
백준 알고리즘 15665 (N과 M(11)) - python (0) | 2019.10.16 |
백준 알고리즘 2581 (소수) - python (0) | 2019.10.16 |
백준 알고리즘 15664 (N과 M(10)) - python (0) | 2019.10.16 |
댓글