영어 사전의 단어 순서는 다음과 같다.
예를 들어 A, B, C, D의 사전식 배열은 배열의 첫 번째가 처음 알파벳 A가 오고 그다음 BCD 순이 된다. 처음 알파벳 A가 나오고 BCD를 배열하고 끝나면 다음 B가 첫번째로 놓이고 ACD가 배열된다. 이런 식으로 배열되면 CDAB는 17번째 배열이라는 것을 쉽게 알 수 있는데 첫 문자에 A가 오는 게 6가지, B가 오는 게 6가지, C가 첫 번째 오고 다음 A가 오면 남은 BD 배열하는 방법 2가지, CB 오고 남은 AD 배열하는 방법 2가지, 그 다음이 CDAB 문자열이 나온다.
이를 이용하여 사전 순으로 단어를 정렬하는 코드를 구현하였다.
단어를 담는 사전 배열 dic을 생성한다. 이후 모음 순서 word = 'A','E','I','O','U'에 따라 단어 생성 함수 dictionary()를 수행한다. dictionary()는 입력받은 word로 시작하는 단어들을 생성하는 함수로, 생성 가능한 모든 단어를 dic에 추가하였을 경우 다음 알파벳으로 넘어가 새로운 word로 단어 생성을 시작하는 재귀 함수이다.
def solution(word):
dic = []
#1 (s)로 들어오는 문자에 대한 사전
def dictionary(word):
if len(word) == 6: # 최대 길이
return
dic.append(word) # 사전에 추가
#2 (s+i)로 넘김
for i in ('A','E','I','O','U'):
dictionary(word+i) # 문자 붙이기
for i in ('A','E','I','O','U'):
dictionary(i)
return dic.index(word)+1