
풀이
import java.util.ArrayList;
import java.util.List;
class Solution {
static char[] vowels = {'A', 'E', 'I', 'O', 'U'};
static List<String> list = new ArrayList<String>();
public int solution(String word) {
makeWords("", 0);
return list.indexOf(word) + 1;
}
private void makeWords(String str, int depth) {
if(depth > 5) {
return; // 5글자 이상이면 리턴
}
if(depth > 0) { // 1글자 이상이면 리스트에 추가
list.add(str);
}
for (char c : vowels) {
makeWords(str + c, depth + 1);
}
}
}
A, E, I, O, U를 이용해 길이 1부터 5까지 만들 수 있는 모든 조합을 만들어서 리스트에 저장하고 word의 위치를 찾는 방식으로 풀었다.
list.indexOf(word)를 이용하면 인덱스를 구할 수 있고, 순서는 1번부터 시작하므로 +1을 해줬다.
makeWords("", 0) 에서 시작하게 되면 ""은 아직 빈 문자열이고 depth는 0이므로 리스트에 추가되지 않는다.
depth가 5를 초과할 경우에는 리턴한다.
처음 "A" 생성 후 리스트에 저장하고 메서드를 재귀호출한다.
"AA", "AAA", "AAAA", "AAAAA"... 순서로 만들어지고 저장된다.