#include <iostream>
using namespace std;
char arr[15];
char arr2[15];
bool ch[15];
int l, c, temp;
bool check = 0;
int mc = 0;
int jc = 0;
void ft_password(int m)
{
if (m == l)
{
if (mc >= 1 && jc >= 2)
cout << arr2 << '\n';
return ;
}
for (int i = m; i < c; i++)
{
if (ch[i] == 1 )
continue;
arr2[m] = arr[i];
if (m > 0 && arr2[m] < arr2[m - 1])
continue;
ch[i] = 1;
if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u')
mc++;
else
jc++;
ft_password(m + 1);
if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u')
mc--;
else
jc--;
ch[i] = 0;
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> l >> c;
for (int i = 0; i < c; i++)
cin >> arr[i];
for (int i = 0; i < c; i++)
{
for (int j = 0; j < c - 1; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
ft_password(0);
return (0);
}
진짜 속칭 야매(?)로 풀었습니다.
차후 나올 42seoul push-swap에서 배운 전처리로 미리 정렬을 하고 재귀를 진행했는데 맞았으니 다행이지만 좀 더 깔끔하게 푸는 방법이 있을거라 생각하고 다른사람 코드를 한번 확인해 봐야 할 거 같습니다.