이런 재귀의 특성 덕분에 우리는 만들 수 있는 단어를 생성하는 것뿐 아니라, 사전 순으로 정렬된 단어의 리스트도 얻게 되었습니다. 이제 solution() 메서드에서는 generate() 메서드를 사용하여 정렬된 단어의 리스트를 얻고, 이 리스트에서 word가 몇 번째인지 구하면 됩니다. 코드로 구현하면 다음과 같습니다.
public int solution(String word) {
return generate("").indexOf(word);
}
여기에서 잘 살펴보아야 할 점은 generate()에 앞서 언급한 대로 빈 문자열을 넘겨주었다는 것입니다. generate()는 만나는 모든 문자열을 기록하므로 빈 문자열 역시 리스트의 가장 앞에 기록됩니다. 즉, generate(“”)의 결과는 [“”, “A”, “AA”, “AAA”, …]이 됩니다. 따라서 indexOf() 메서드를 사용하면 실제 만들 수 있는 단어의 리스트에서 인덱스가 아니라, 인덱스에 1이 증가된 값을 얻게 됩니다. 문제에 따라 첫 번째 단어는 인덱스 값인 0이 아니라 1을 반환해야 하므로 별다른 처리 없이 indexOf()의 반환값을 그대로 반환해주면 됩니다.
이렇게 재귀를 이용하여 모음 사전 문제를 풀어 보았습니다.