먼저 순서 정보를 없애는 방법을 고려해봐라.

각 알파벳의 스펠링 카운터 배열 비교만을 한다.

26글자를 5개까지 카운트 할 수 있는 배열의 양자화에 필요한 최대 비트의 크기는,

26 * 3비트(8까지 카운트) = 78비트다. (10바이트 -> 3개의 int로 커버)


현실적으로 네, 다섯개의 스펠링이 모두 같은 다섯 글자의 영어단어는 없다고 보니까,

카운터는 2비트로 충분할 것 같다. = 26 * 2비트 = 52비트 (7바이트 -> 2개의 int로 커버)

(미리 측정해보면 알겠지)


이걸 이용해 사전 데이타 기반으로 미리 인덱스 테이블을 만들어두면 좋겠지.

인덱스 테이블을 정렬해둘 경우, m(찾을단어) log n(사전크기) 으로 이진탐색 할 수 있다.


하지만 여기서, 인덱스 테이블을 또다시 인덱싱 해둘 수 있다.

총 2개의 int 중에 MSB에 해당하는 65536 개의 인덱스 패턴의 시작주소를 따로 배열에 담아서

첫 시도의 숏컷으로 사용하는거지.

(영어 사전이나 성경 옆에 라벨링이 되어있어 바로 찾게하는것 처럼)


물론 해시테이블도 유효할 수 있다.


* 근데 같은 알파벳 구성을 갖는 5글자의 영어단어에 대해선 어떻게 할거냐?