사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
word | result |
---|---|
"AAAAE" | 6 |
"AAAE" | 10 |
"I" | 1563 |
"EIO" | 1189 |
이 문제는 dfs(깊이 우선 탐색) 알고리즘을 이용해서 모든 경우의 수를 구한뒤 풀 수 있었다.
import java.util.ArrayList;
import java.util.Collections;
class Solution {
char[] arr = {'A', 'E', 'I', 'O', 'U'};
StringBuilder sb;
ArrayList<String> list;
public int solution(String word) {
list = new ArrayList<>();
dfs("");
Collections.sort(list);
return list.indexOf(word)+1;
}
public void dfs(String temp) {
if(temp.length()==5) { //최대 길이
return;
}
sb = new StringBuilder(temp);
for(int i=0; i<5; i++) {
sb.append(arr[i]);
list.add(sb.toString());
dfs(sb.toString());
sb.delete(sb.length()-1, sb.length());
}
}
}