이 문제의 경우 dfs를 통하여 모든 경우의 수를 사전에 추가를 한다고 생각을 했다.
그리고 이렇게 모든 값이 추가된 사전을 for문을 통해 돌면서 result에 해당하는 값과 같은 값을 같는 경우의 인덱스+1 이 답이 될 것이라고 생각을하고 풀었다.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
char c[5] = {'A','E','I','O','U'};
string result[8000];
int cnt=0;
void dfs(string s,char plus)
{
if(s.size() == 5) return;
s += plus;
result[cnt] = s;
cnt++;
for(int i=0;i<5;i++)
{
dfs(s,c[i]);
}
}
int solution(string word) {
int answer = 0;
for(int i=0;i<5;i++)
{
dfs("",c[i]);
}
for(int i=0;i<8000;i++)
{
cout<<result[i] <<" ";
if(result[i]==word)
{
answer = i+1;
break;
}
}
return answer;
}
/*
AEIOU만을 사용하여 만들 수 있는 길이 5이하의 모든 단어가 기록되어 있는 사전
첫번째는 A 마지막은 UUUUU
전부다 만들면 될듯 ?
A일떄, E일때, I일때, O일때, U일때
*/
먼저 AEIOU의 각각을 CHAR형 배열에 추가를 하였다.
그리고 AEIOU에 대해서 dfs를 구현하여 string 배열에 값을 추가하도록 해주었다.