반응형
포인트
- 백트랙킹을 이용하여서 암호를 조합하는 문제 입니다. 문제 조건에서는 모음 1개 자음 2개 이상을 조건으로 갖고 있어 이를 해결하기 위해 재귀함수의 파라미터로 정의하여 사용하였습니다.
🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다.
python
n, m = map(int, input().split())
data = input().split()
data.sort()
answer = set()
sel = []
def go(index: int, cnt: int, one: int, two: int) -> None:
global answer
if cnt == n:
if one >= 1 and two >= 2:
answer.add(''.join(sel))
return
if index >= len(data):
return
sel.append(data[index])
if data[index] in 'aeiou':
go(index + 1, cnt + 1, one + 1, two)
else:
go(index + 1, cnt + 1, one, two + 1)
sel.pop()
go(index + 1, cnt, one, two)
go(0, 0, 0, 0)
for ele in sorted(list(answer)):
print(ele)
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] Candy (0) | 2021.06.27 |
---|---|
[알고리즘] 미로 만들기 (0) | 2021.06.16 |
[알고리즘] Max Area of Island (0) | 2021.06.01 |
[알고리즘] 코딩 테스트를 위해 알아야 하는 문제들 (0) | 2021.05.17 |
[알고리즘] Maximum Subarray + 배열에서 부분 최대합을 구하는 방법 (0) | 2021.05.17 |
댓글