문제 출처 : https://www.acmicpc.net/problem/1759
문제 해결 방법
- 알파벳 정렬
- 기준이 되는 것은 선택! => 알파벳
1부터 증가하는 몇 번째의 알파벳인지 나타내는 인덱스 필요 -> 몇 번째 알파벳 : index
- 알파벳을 사용하는지 안사용하는지에 대해서 다음 호출에 영향을 미치는 것은 지금까지 만들어진 암호 : password
- 추가적으로 사용할지 말지 결정해야하는 알파벳의 인덱스를 준다.
- 함수를 만들면 3가지를 찾아봐야하는데
- 다음 경우 호출 -> 다음 경우를 어떻게 호출 되는지, 값이 어떻게 변하는지 알아야 함
- 알파벳을 사용 → i는 1증가, password+alpha[i]
- 알파벳을 사용하지 않음 → password는 그대로, i는 1증가
- 정답을 찾은 경우 -> 더 이상 재귀함수를 호출할 필요가 없을 때!
- password의 길이가 입력 n과 같을 경우
- 불가능한 경우 -> 함수의 호출을 종료
- 아직 암호의 길이가 n이 되지 않았으나 선택할 알파벳이 없을 때
코드 / 코드 설명
주의사항
- 정답을 찾았을 때 한 개의모음, 두 개의 자음을 만족해야하니
password에 들어있는 각각의 알파벳을 모음과 자음으로 분리해서 몇 개씩 있는지 찾아야함